Добавлен: 22.04.2023
Просмотров: 340
Скачиваний: 7
СОДЕРЖАНИЕ
1. Распределенные системы обработки информации
1.1 Аппаратно-программные компоненты системы
1.2 Сетевая модель OSI и стек протоколов TCP/IP
1.3 Взаимодействие процессов клиента и сервера
1.4 Варианты архитектуры клиент-серверных приложений
2. Организация и распределение клиентов и серверов
2.1 Типовые варианты организации архитектуры клиент-сервер
2.2 Современные варианты организации архитектуры клиент-сервер
2.3 Разделение клиент-серверных приложений на уровни
3. Программная модель клиента и сервера
Понятие клиента, запрашивающего службы сервера, помогает понять сложность распределенных систем и управлять ей [16].
1.4 Варианты архитектуры клиент-серверных приложений
Архитектура «клиент-сервер» определяет модель взаимодействия компьютеров в вычислительной сети. Обычно один компьютер (сервер) располагает информационно-вычислительными и аппаратными ресурсами, такими как накопители данных, процессоры, базы данных и различные сервисы. Другие компьютеры (клиенты) пользуются этими ресурсами.
Конкретный сервер характеризуется видом ресурса, которым он владеет или ролью. Если ресурсом являются базы данных, то говорят, что сервер выполняет роль сервера баз данных. Если ресурс накопитель информации, то говорят о файловом сервере. Если ресурс – обработка электронной почты, то говорят о почтовом сервере.
Ключевой принцип технологии «клиент-сервер» состоит в разделении функций приложения на три группы или логические компоненты:
1. Компонент ввода и представления данных.
2. Прикладной компонент, поддерживающий функции, необходимые для выполнения действий предметной области.
3. Компонент доступа к информационным ресурсам или менеджер ресурсов, поддерживающий глобальные функции хранения и управления данными.
Различия в реализации приложений в рамках технологии «клиент-сервер» определяются тем, какие механизмы используются для реализации функций всех трех групп и как логические компоненты распределяются между компьютерами в сети.
Выделяются три подхода или модели реализации технологии «клиент-сервер» в приложениях: доступ к удаленным данным, сервер баз данных, сервер приложений [6].
1. Доступа к удаленным данным (RDA, remote data access). Реализация представления данных и прикладного компонента совмещены и выполнятся на компьютере-клиенте, который поддерживает функции ввода и отображения данных, так и чисто прикладные функции.
Доступ к ресурсам может выполняться с помощью языка запросов типа SQL (в случае баз данных) или вызовами функций специальных библиотек (в случае наличия интерфейса API). Запросы направляются по сети удаленному компьютеру, который работает с запросами и возвращает клиенту ответ.
КЛИЕНТ
СЕРВЕР
Компонент представления
Прикладной компонент
Компонент доступа к ресурсам
Ресурс
Запрос
Ответ
Рисунок 5 – Архитектура приложений «клиент-сервер» (модель толстого клиента для доступа к данным, RDA)
Говоря о таком виде архитектуры «клиент-сервер» обычно имеют модель, называемую «толстым клиентом».
2. Сервера базы данных (DBS, database server). Процесс, выполняемый на компьютере-клиенте, ограничивается функциями представления, а собственно прикладные функции реализованы в хранимых (резидентных) процедурах базы данных.
КЛИЕНТ
СЕРВЕР
Компонент представления
Компонент доступа к БД
БД
Вызов
Ответ
Прикладной компонент SQL
Рисунок 6 – Архитектура приложений «клиент-сервер» (модель системы для доступа к данным и сервисам, DBS)
Процедуры находятся непосредственно в базе данных и выполняются на компьютере-сервере, где функционирует ядро системы. В этом случае понятие ресурса сужено до конкретной базы данных. На практике часто используются смешанные модели, когда некоторые функции поддерживаются процедурами, а часть сложных функций реализуются в прикладной программе компьютера-клиента.
3. Сервера приложений (Application Server, AS).
Процесс компьютера-клиента обычно выполняет функции ввода и вывода данных. Прикладные функции выполняются группой процессов (серверов приложений), функционирующих на удаленном компьютере. Доступ к ресурсам, необходимым для решения прикладных задач, выполняется, как и в модели RDA. Из прикладных компонентов доступны ресурсы типа баз данных, файлы, очереди и т.д. Серверы приложений обычно выполняются на компьютере, где функционирует менеджер ресурсов.
КЛИЕНТ
СЕРВЕР
Компонент представления
Вызов
Ответ
Прикладной компонент SQL
СЕРВЕР
Вызов
Ответ
Доступ к ресурсам
БД
Рисунок 7 – Архитектура приложений «клиент-сервер» (модель системы сервера приложений, AS)
Модель «клиент-сервер», когда подавляющее большинство прикладных программ и сервисов расположено на стороне сервера, называется «тонким клиентом».
Модели RDA и DBS модели реализуют двухзвенную схему разделения функций, а модель сервера приложений AS реализует классическую трехзвенную схему разделения функций, когда прикладной компонент выделен как важнейший.
Для передачи данных используются различные способы, например, выделенный канал (наибольшая безопасность и надежность передачи данных, система взаимодействует с одним партнером) или ячеистая сеть (система взаимодействует с несколькими партнерами).
Клиент-серверный принцип применим и к взаимодействию программных процессов, а не только к узлам сети. Если один из процессов выполняет функции, предоставляя набор услуг, то такой процесс именуют сервером. Технология «клиент-сервер» дает представление о том, как должна быть организована современная распределенная информационная система. В каждом конкретном случае технологическое решение должно основываться на конкретных предметных областях и соответствующих прикладных платформах [2].
2. Организация и распределение клиентов и серверов
2.1 Типовые варианты организации архитектуры клиент-сервер
Простейшая физическая организация на компьютерах приложений в модели клиент-сервер предполагает наличие двух типов машин:
1. Клиентские машины, на которых имеются программы, реализующие только пользовательский интерфейс или его часть.
2. Серверы, реализующие все остальное, т.е. уровни обработки и данных.
Проблема подобной организации в том, что система не является распределенной: все происходит на сервере, а клиент представляет собой не что иное, как терминал.
Существует также множество других вариантов в распределенных системах, например, многозвенные архитектуры. Один из подходов к организации клиентов и серверов – это распределение программ, находящихся на уровне приложений по различным машинам [17].
Рассмотрим разделение на два типа машин: на клиенты и на серверы, что приведет нас к физически двухзвенной архитектуре. Один из возможных вариантов организации – поместить на клиентскую сторону только терминальную часть пользовательского интерфейса (вариант а), позволив приложению удаленно контролировать представление данных.
Альтернативой будет передача клиенту всей работы с пользовательским интерфейсом (вариант б). В обоих случаях происходит отделение от приложения графически внешнего интерфейса, связанный с остальной частью приложения на сервере посредством специфичного протокола. В модели интерфейс делает только то, что необходимо для предоставления интерфейса приложения.
Разработчика также могут перенести во внешний интерфейс часть приложения (вариант в). Примером может быть вариант, когда приложение создает форму непосредственно перед ее заполнением. Внешний интерфейс затем проверяет правильность и полноту заполнения формы и при необходимости взаимодействует с пользователем. Другим примером организации системы по образцу, представленному в варианте в, может служить текстовый процессор, в котором базовые функции редактирования осуществляются на стороне клиента с локально кэшируемыми или находящимися в памяти данными, а специальная обработка, т.к. проверка орфографии или грамматики, выполняется на стороне сервера.
|
КЛИЕНТСКАЯ МАШИНА |
||||
|
Пользовательский интерфейс |
Пользовательский интерфейс |
Пользовательский интерфейс |
Пользовательский интерфейс |
Пользовательский интерфейс |
|
Приложение |
Приложение |
Приложение |
||
|
Пользовательский интерфейс |
База данных |
|||
|
Приложение |
Приложение |
Приложение |
||
|
База данных |
База данных |
База данных |
База данных |
База данных |
|
СЕРВЕРНАЯ МАШИНА |
||||
|
Вариант а |
Вариант б |
Вариант в |
Вариант г |
Вариант д |
Рисунок 8 – Варианты организации архитектуры клиент-сервер
Во многих системах клиент-сервер популярна организация, представленная в варианте г. Эти типы организации применяются в том случае, когда клиентская машина соединена сетью с распределенной файловой системой или базой данных. Большая часть приложения работает на клиентской машине, а все операции с файлами или базой данных передаются на сервер.
Вариант д отражает ситуацию, когда часть данных содержится на локальном диске клиента, например, при работе в Интернет клиент может постепенно создать на локальном диске кэш наиболее часто просматриваемых веб-сайтов.
Следует отметить, что иногда серверу требуется работать в качестве клиента, т.е. обращаться к услугам другого сервера предоставляя собственные сервисы. Такая ситуация приводит к физически трехзвенной архитектуре. Программы, составляющие часть уровня обработки, выносятся на отдельный сервер, но дополнительно могут частично находиться и на машинах клиентов и серверов. Типичный пример – обработка транзакций.
2.2 Современные варианты организации архитектуры клиент-сервер
В современных архитектурах распределение на клиенты и серверы происходит способами, известными как вертикальное и горизонтальное распределение.
Особенностью вертикального распределения является то, что оно достигается размещением логически различных компонентов на разных машинах. Понятие связано с концепцией вертикального разбиения в распределенных реляционных базах данных, где под термином понимается разбиение по столбцам таблиц для их хранения на различных машинах. Вертикальное распределение – один из способов организации приложений клиент-сервер.
При горизонтальном распределении сервер может содержать физически разделенные части логически однородного модуля, причем работа с каждой из частей может происходить независимо. Это делается для выравнивания загрузки. В качестве примера горизонтального распределения можно рассмотреть веб-сервер, реплицированный на несколько машин локальной сети [20].
На каждом из серверов содержится один и тот же набор веб-страниц, и всякий раз, когда одна из страниц обновляется, ее копии незамедлительно рассылаются на все серверы. Сервер, которому будет передан приходящий запрос, выбирается по циклическому алгоритму (англоязычный термин round-robin). Форма горизонтального распределения весьма успешно используется для выравнивания нагрузки на серверы популярных веб-сайтов. Таким образом могут быть распределены и клиенты. Для несложного приложения, предназначенного для коллективной работы сервера вообще могут отсутствовать. В этом случае говорят об одноранговом распределении (англоязычный термин peer-to-peer). Например, пользователь хочет связаться с другим пользователем, оба должны запустить одно приложение, чтобы начать сеанс. Третий клиент может общаться с одним из них или обоими, для чего ему нужно запустить аналогичную программу.
ИНТЕРНЕТ
Линии связи
Очередь запросов к веб-серверу
Встреча и обработка входящих запросов
Запросы, обрабатываемые по принципу карусели (циклический алгоритм round robin)
Реплицированные веб-серверы, каждый из которых содержит одни и те же веб-страницы
Рисунок 9 – Пример горизонтального распределения служб веб-сервера