Компоненты сетевого приложения. Клиент-серверное взаимодействие и роли серверов
Высокоуровневое взаимодействие. Клиент-серверные, одноранговые и гибридные сети
Основное назначение компьютерных сетей — осуществление интерактивной связи между узлами для совместного использования ресурсов. Сетевые ресурсы — это данные, приложения и периферийные устройства. Доступ к сетевым ресурсам может быть централизованным (клиент-серверная модель), децентрализованным (одноранговая модель) и гибридным (частично централизованным).
Сети на основе сервера
Сеть на основе сервера (серверов) представляет собой распределенную систему, компонентами которой являются клиенты, запрашивающие некоторые ресурсы или сервисы, и серверы, их представляющие (рис. 1).
Рис. 1. Структура сети на основе выделенного сервера
Здесь, сервер — это высокопроизводительный компьютер, обслуживающий клиентсткие подключения. Такое определение является не полным и не отражает всего смысла клиент-серверной архитектуры, но широко используется при проектировании и реализации компьютерных сетей.
Выделенный сервер (dedicated server) выполняет специальные, серверные, приложения (в Windows — службы, в UNIX — демоны), которые представляют определенные услуги: доступ к данным, обмен сообщениями, удаленный запуск приложений и т.п.
Сетевые ресурсы в такой сети концентрируются на сервере, он же представляет услугицентрализованного управления этими ресурсами.
Клиентами сети на основе сервера являются компьютеры пользователей, которые обращаются к серверу за услугами по решению прикладных задач, таких как работа с общими файлами, отправка и получение электронной почты, ресурсоемкие вычисления, доступ в Интернет и т.п.
В зависимости от задач и принятой модели клиент-серверного взаимодействия, требования к вычислительной мощности клиентов и серверов могут изменяться в очень широком диапазоне.
Общим недостатком сетей на основе сервера, как и всех централизованных систем, является то, что неполадки на сервере ставят под угрозу работоспособность всей сети. Так, например, слишком большое число клиентских подключений может привести к неправильному функционированию или полному отключению сервера. Киберпреступники используют такую тактику в сетевых атаках типа DDoS (Distributed Deny of Service, — анг., распределенный отказ в обслуживании).
Типы серверов
В качестве примера, перечислим некоторые виды серверов, используемых в глобальной и локальных сетях:
- Файловый сервер — предназначен для хранения и совместного использования файлов, доступ к которым осуществляется по сети.
- Сервер печати (принт-сервер) — обеспечивает пользователей возможностью распечатки документов на сетевом принтере.
- Почтовый сервер — обслуживает процессы передачи электронных сообщений между пользователями сети.
- Коммуникационный сервер — управляет трафиком между узлами локальной сети и удаленными узлами.
В корпоративных сетях обычно одновременно используется несколько серверов разного назначения. Поэтому необходимо учитывать все возможные нюансы, которые могут проявиться при расширении сети, с тем чтобы изменение роли определенного сервера в дальнейшем не отразилось на работе всех пользователей.
Одноранговые сети
Одноранговая сеть представляет собой распределенную среду, в которой все узлы равноправны. Компьютеры такой сети могут функционировать как в качестве клиентов, так и серверов (рис. 2).
Пользователи одноранговой сети самостоятельно решают, какие ресурсы (в первую очередь файловые) на своем компьютере сделать общедоступными по сети. Децентрализованное управление ресурсами требует от пользователей повышенного уровня компьютерной грамотности, чтобы работать и как пользователю, и как администратору своего компьютера.
Рис. 2. Структура одноранговой сети
В 90-е годы XX века под одноранговой сетью понималась небольшая локальная сеть на 10-30 компьютеров с децентрализованным управлением — рабочая группа. Развитие Интернет привело к появлению протоколов одноранговых сетей глобального масштаба («пиринговых» сетей, от анг. peer— равный, см. peer-to-peer).
Гибридные сети
Полная децентрализация в одноранговых сетях, насчитывающих сотни и тысячи компьютеров, приводит к сложностям в управлении ими. Эта проблема отчасти решается добавлением координационного сервера в структуру сети (рис. 3). На сервер возлагаются задачи контроля за состоянием сети, представления списка доступных ресурсов и общего управления. Например, клиенты могут обращаться к такому серверу для авторизации, после чего способны взаимодействовать друг с другом непосредственно.
Рис. 3. Комбинированная (гибридная) сеть
Комбинированные, или гибридные сети — получили наибольшее распространение, поскольку сочетают преимущества одноранговых и клиент-серверных сетей и, во-многом, лишены их недостатков. Однако, для правильной реализации гибридных сетей и поддержания их в работоспособном состоянии от системных администраторов требуются глубокие знания и навыки планирования.
Контрольные вопросы
1. Опишите особенности одноранговых сетей.
2. Опишите особенности сетей на основе сервера.
Компоненты сетевого приложения. Клиент-серверное взаимодействие и роли серверов.
Как правило компьютеры и программы, входящие в состав информационной системы, не являются равноправными. Некоторые из них владеют ресурсами (файловая система, процессор, принтер, база данных и т.д.), другие имеют возможность обращаться к этим ресурсам. Компьютер (или программу), управляющий ресурсом, называют сервером этого ресурса (файл-сервер, сервер базы данных, вычислительный сервер...). Клиент и сервер какого-либо ресурса могут находится как на одном компьютере, так и на различных компьютерах, связанных сетью.
В рамках многоуровневого представления вычислительных систем можно выделить три группы функций, ориентированных на решение различных подзадач:
1. функции ввода и отображения данных (обеспечивают взаимодействие с пользователем);
2. прикладные функции, характерные для данной предметной области;
3. функции управления ресурсами (файловой системой, базой даных и т.д.)
Рис.1. Компоненты сетевого приложения
Выполнение этих функций в основном обеспечивается программными средствами, которые можно представить в виде взаимосвязанных компонентов (рис. 1), где:
- компонент представления отвечает за пользовательский интерфейс;
- прикладной компонент реализует алгоритм решения конкретной задачи;
- компонент управления ресурсом обеспечивает доступ к необходимым ресурсам.
Автономная система (компьютер, не подключенный к сети) представляет все эти компоненты как на различных уровнях (ОС, служебное ПО и утилиты, прикладное ПО), так и на уровне приложений (не характерно для современных программ). Так же и сеть — она представляет все эти компоненты, но, в общем случае, распределенные между узлами. Задача сводится к обеспечению сетевого взаимодействия между этими компонентами.
Архитектура «клиент-сервер» определяет общие принципы организации взаимодействия в сети, где имеются серверы, узлы-поставщики некоторых специфичных функций (сервисов) и клиенты, потребители этих функций.
Практические реализации такой архитектуры называются клиент-серверными технологиями. Каждая технология определяет собственные или использует имеющиеся правила взаимодейстия между клиентом и сервером, которые называются протоколом обмена (протоколом взаимодействия).
Двухзвенная архитектура
В любой сети (даже одноранговой), построенной на современных сетевых технологиях, присутствуют элементы клиент-серверного взаимодействия, чаще всего на основе двухзвенной архитектуры. Двухзвенной (two-tier, 2-tier) она называется из-за необходимости распределения трех базовыхкомпонентов между двумя узлами (клиентом и сервером).
Рис.2. Двухзвенная клиент-серверная архитектура
Двухзвенная архитектура используется в клиент-серверных системах, где сервер отвечает на клиентские запросы напрямую и в полном объеме, при этом используя только собственные ресурсы. Т.е. сервер не вызывает сторонние сетевые приложения и не обращается к сторонним ресурсам для выполнения какой-либо части запроса (рис. 2)
Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры:
- сервер терминалов — распределенное представление данных;
- файл-сервер — доступ к удаленной базе данных и файловым ресурсам;
- сервер БД — удаленное представление данных;
- сервер приложений — удаленное приложение.
Перечисленные модели с вариациями представлены на рис. 3.
Рис.3. Модели клиент-серверного взаимодействия
Исторически первой появилась модель распределенного представления данных (модель сервер терминалов). Она реализовывалась на универсальной ЭВМ (мэйнфрейме), выступавшей в роли сервера, с подключенными к ней алфавитно-цифровыми терминалами. Пользователи выполняли ввод данных с клавиатуры терминала, которые затем передавались на мэйнфрейм и там выполнялась их обработка, включая формирование «картинки» с результатами. Эта «картинка» и возвращалась пользователю на экран терминала.
С появлением персональных компьютеров и локальных сетей, была реализована модель файлового сервера, представлявшего доступ файловым ресурсам, в т.ч и к удаленной базе данных. В этом случае выделенный узел сети является файловым сервером, на котором размещены файлы базы данных. На клиентах выполняются приложения, в которых совмещены компонент представления и прикладной компонент (СУБД и прикладная программма), использующие подключенную удаленную базу как локальный файл. Протоколы обмена при этом представляют набор низкоуровневых вызовов операций файловой системы.
Такая модель показала свою неэффективность ввиду того, что при активной работе с таблицами БД возникает большая нагрузка на сеть. Частичным решением является поддержка тиражирования (репликации) таблиц и запросов. В этом случае, например при изменении данных, обновляется не вся таблица, а только модифицированная ее часть.
С появлением специализированных СУБД появилась возможность реализации другой модели доступа к удаленной базе данных — модели сервера баз данных. В этом случае ядро СУБД функционирует на сервере, прикладная программа на клиенте, а протокол обмена обеспечивается с помощью языка SQL. Такой подход по сравнению с файловым сервером ведет к уменьшению загрузки сети и унификации интерфейса «клиент-сервер». Однако, сетевой трафик остается достаточно высоким, кроме того, по прежнему невозможно удовлетворительное администрирование приложений, поскольку в одной программе совмещаются различные функции.
С разработкой и внедрением на уровне серверов баз данных механизма хранимых процедур появилась концепция активного сервера БД. В этом случае часть функций прикладного компонента реализованы в виде хранимых процедур, выполняемых на стороне сервера. Остальная прикладная логика выполняется на клиентской стороне. Протокол взаимодействия — соответствующий диалект языка SQL.
Преимущества такого подхода очевидны:
- возможно централизованное администрирование прикладных функций;
- снижение стоимости владения системой (TOC, total cost of ownership) за счет аренды сервера, а не его покупки;
- значительное снижение сетевого трафика (т.к. передаются не SQL-запросы, а вызовы хранимых процедур).
Основной недостаток — ограниченность средств разработки хранимых процедур по сравнению с языками высокого уровня.
Реализация прикладного компонента на стороне сервера представляет следующую модель — сервер приложений. Перенос функций прикладного компонента на сервер снижает требования к конфигурации клиентов и упрощает администрирование, но представляет повышенные требования к производительности, безопасности и надежности сервера.
В настоящее время намечается тенденция возврата к тому, с чего начиналась клиент-серверная архитектура — к централизации вычислений на основе модели терминал-сервера. В современной реинкарнации терминалы отличаются от своих алфавитно-цифровых предков тем, что имея минимум программных и аппаратных средств, представляют мультимедийные возможности (в т.ч. графический пользовательский интерфейс). Работу терминалов обеспечивает высокопроизводительный сервер, куда вынесено все, вплоть до виртуальных драйверов устройств, включая драйверы видеоподсистемы.
Трехзвенная архитектура
Рис.4. Трехзвенная клиент-серверная архитектура
Еще одна тенденция в клиент-серверных технологиях связана со все большим использованием распределенных вычислений. Они реализуются на основе модели сервера приложений, где сетевое приложение разделено на две и более частей, каждая из которых может выполняться на отдельном компьютере. Выделенные части приложения взаимодействуют друг с другом, обмениваясь сообщениями в заранее согласованном формате. В этом случае двухзвенная клиент-серверная архитектура становится трехзвенной (three-tier, 3-tier).
Как правило, третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом (рис. 4):
1. Представление данных — на стороне клиента.
2. Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО).
3. Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные.
Рис.5. Многозвенная (N-tier) клиент-серверная архитектура
Трехзвенная архитектура может быть расширена до многозвенной (N-tier, Multi-tier) путем выделения дополнительных серверов, каждый из которых будет представлять собственные сервисы и пользоваться услугами прочих серверов разного уровня. Абстрактный пример многозвенной модели приведен на рис. 5.
Сравнение архитектур
Двухзвенная архитектура проще, так как все запросы обслуживаются одним сервером, но именно из-за этого она менее надежна и предъявляет повышенные требования к производительности сервера.
Трехзвенная архитектура сложнее, но благодаря тому, что функции распределены между серверами второго и третьего уровня, эта архитектура представляет:
1. Высокую степень гибкости и масштабируемости.
2. Высокую безопасность (т.к. защиту можно определить для каждого сервиса или уровня).
3. Высокую производительность (т.к. задачи распределены между серверами).