
- •Структура методы и принципы функционирования распределённых информационных систем (1-62с.) План
- •17.1. Транспортные протоколы…….60
- •1. Понятие распределенных информационных систем, принципы их создания и функционирования
- •2. Территориально распределённые компьютерные системы
- •3. Типовые компоненты информационной системы
- •4.Два типа сетей.
- •Одноранговые системы.
- •Системы на основе сервера.
- •Специализированные серверы
- •2. Серверы приложений.
- •3. Почтовые серверы
- •4. Факс-серверы
- •5. Коммуникационные серверы
- •5. Понятие распределенной информационной системы
- •6. Основные задачи распределенной обработки
- •6.1. Прозрачность
- •6.2. Открытость
- •6.3. Масштабируемость (возможность расширения)
- •7. Проблемы масштабируемости
- •8. Технологии масштабирования.
- •8.3. Репликация (дублирование).
- •9. Концепции аппаратных решений
- •10. Концепции программных решений
- •10.1. Модели промежуточного уровня.
- •10.2. Службы (сервисы) промежуточного уровня
- •11. Промежуточный уровень и открытость.
- •12. Технологии обработки информации в распределенных системах
- •1.Технология “хозяин-слуга”:
- •13. Модель Клиент-сервер
- •14. Модели взаимодействия компонентов рис
- •14.1. Понятие промежуточной среды
- •15. Сетевые протоколы
- •1. Физический
- •2. Канальный .
- •16. Программное обеспечение
- •17. Эталонная модель взаимодействия открытых систем
- •17.1. Транспортные протоколы.
- •18. Алгоритм выполнения уровневых процедур
- •Возможные значения полей пакета
- •19. Соответствие модели osi и других моделей сетевого взаимодействия
- •Семейство tcp/ip
- •Семейство ipx/spx
- •20. Понятие промежуточной среды
13. Модель Клиент-сервер
В этой базовой модели все процессы в РИС делятся на две возможно перекрывающиеся группы. Процессы, реализующие некоторую службу, например, службу файловой системы или БД, называются серверами. Процессы, запрашивающие службы у серверов путем посылки запроса и последующего ожидания ответа от сервера, называются клиентами.
Взаимодействие в рамках модели клиент-сервер может быть как синхронным, когда клиент ожидает завершения обработки своего запроса сервером, так и асинхронным, при котором клиент посылает серверу запрос и продолжает свое выполнение без ожидания ответа сервера. Модель клиент-сервер может использоваться как основа описания различных взаимодействий (рис.1.2).
Рис. 1.2 Модель взаимодействия клиент-сервер
Обычно нет четкого различия разделения функций системы между клиентом и сервером. Например, сервер распределенной БД может выступать клиентом, передающим запросы на файловые серверы, отвечающие за хранение таблиц этой БД.
Рассмотрим некое типичное приложение, которое в соответствие с современными представлениями может быть разделено на следующие логические уровни (рис.1.3).
Рис. 1.3 Логические уровни приложения
Уровень интерфейса обычно реализуется на клиенте, что вполне естественно.
На уровне обработки обычно реализуется основная бизнес-логика приложения (функциональность).
Уровень данных содержит программы, которые предоставляют данные обрабатывающим их приложениям. Особым свойством этого уровня является требование сохранности (persistence). Это означает, что когда приложение не работает, данные должны сохраняться в определенном месте (файле или БД) для последующего использования. Этот уровень обычно реализуется на сервере.
Кроме хранения данных, уровень данных обеспечивает поддержку целостности данных для разных приложений. Для БД поддержание целостности означает, что схемы БД, специфические условия приложений (триггеры БД), хранимые процедуры и прочее также хранятся на этом уровне.
Обычно уровень данных реализуется в форме реляционной БД. Это обеспечивает независимость данных от приложений. Применение реляционных баз данных в модели клиент-сервер помогает отделить уровень обработки от уровня данных, рассматривая данные и их обработку независимо друг от друга.
Варианты архитектуры клиент-сервер
Разделение системы на три логических уровня приводит к проблеме физического распределения приложений по отдельным компьютерам в модели клиент-сервер. Самая простая организация предполагает использование двух типов машин:
1. Клиентские машины (рабочие станции), на которых устанавливаются программы-клиенты, реализующие интерфейс.
2. Серверы, реализующие все остальное, то есть уровни обработки и данных.
Проблема такой организации состоит в том, что система не является распределенной, все происходит на сервере, а клиент используется как простой терминал.
Поскольку на практике разных пользователей системы обычно интересует доступ к одним и тем же данным, наиболее простым разнесением функций системы между несколькими компьютерами будет разделение логических уровней приложения между одной серверной частью приложения, отвечающей за доступ к данным, и находящимися на нескольких компьютерах клиентскими частями, реализующими интерфейс пользователя. Логика приложения может быть отнесена к серверу, клиентам или разделена между ними.
Таким образом, программные решения варьируются от минимизации функций интерфейса пользователя на клиенте (тонкий клиент) до передачи клиенту всей работы с пользовательским интерфейсом (толстый клиент). В обоих случаях мы отделяем от приложения графический внешний интерфейс, связанный с остальной частью приложения (находящейся на сервере) с помощью конкретного для данного приложения протокола. В этом подходе внешний интерфейс делает только то, что нужно для предоставления интерфейса приложения.
Архитектуру построенных по такому принципу называют клиент-серверной или двухзвенной (two-tiered architecture) (рис. 1.4). Хотя подобные системы часто не относят к классу распределенных, но формально они могут считаться простейшими представителями распределенных систем.
Рис. 1.4 Двухзвенная архитектура
Развитием архитектуры клиент-сервер является трехзвенная архитектура (three-tiered architecture), в которой интерфейс пользователя, логика приложения и доступ к данным выделены в самостоятельные составляющие системы, которые могут работать на независимых компьютерах (рис. 3).
В такой архитектуре программы, составляющие часть уровня обработки выносятся на отдельный сервер (сервер приложений), но дополнительно могут частично находиться на машинах клиентов и серверов. Типичный пример – обработка транзакций. В этом случае отдельный процесс – монитор транзакций – координирует все транзакции.
Запрос пользователя в подобных системах последовательно обрабатывается клиентской частью системы, сервером логики приложения и сервером баз данных. Однако обычно под распределенной системой понимают системы с более сложной архитектурой, чем трехзвенная.
Рис. 3. Трехзвенная архитектура
Многозвенные архитектуры клиент-сервер – это прямое продолжение разделения приложений на уровни интерфейса пользователя, компонентов обработки и данных. Разные звенья взаимодействуют в соответствии с логической организацией приложения. Во многих бизнес-приложениях распределенная обработка эквивалентна организации многозвенной архитектуры приложений клиент-сервер. Такой тип распределения называется вертикальным распределением.
Главная его особенность – это размещение логически разных компонентов на разных машинах.
Применительно к приложениям автоматизации деятельности предприятия, распределенными обычно называют системы с логикой приложения, распределенной между несколькими компонентами системы, каждая из которых может выполняться на отдельном компьютере.
Таким образом, в обиходе под распределенной системой часто подразумевают рост многозвенной архитектуры «в ширину», когда запросы пользователя не проходят последовательно от интерфейса пользователя до единственного сервера баз данных.
В современных архитектурах подобное распределение на клиенты и серверы называется горизонтальным распределением. При таком типе распределения клиент или сервер может содержать физически разделенные части логически однородного модуля, причем работа с каждой из частей может происходить независимо (рис. 5).
Рис. 5. Компоненты распределенной системы
Пример – web-сервер, реплицированный на несколько машин в локальной сети. При изменении одной Web-страницы – изменения рассылаются по всем серверам. Сервер, которому будет передан приходящий запрос, выбирается по принципу «карусели». Такая форма распределения используется для выравнивания нагрузки на серверы популярных web-сайтов.
Также могут быть распределены и клиенты. Для простых приложений можно обойтись без серверов. В этом случае говорят об одноранговом распределении (пиринговом). Подобное происходит, например, при связи двух (или более) пользователей. Оба должны запустить одно и то же приложение, чтобы начать сеанс.
Есть и другие варианты организации архитектур, например, которые распределены как вертикально, так и горизонтально.
Итоги
Распределенные системы (РС) состоят из автономных компьютеров, работающих совместно, в виде единой связной системы. Их преимущества по сравнению с монолитными системами:
РИС упрощают интеграцию разных приложений в единую систему;
Масштабируемость. Размер РИС ограничен только размерами базовой сети.
Платой за эти преимущества часто есть усложнение ПО, снижение производительности и проблемы с безопасностью.
Существуют разные типы распределенных систем. Распределенные ОС используются для управления аппаратными средствами взаимосвязанных КС к которым относятся мультипроцессорные и гомогенные мультикомпьютерные системы. Эти РС на самом деле не состоят из автономных компьютеров, но успешно воспринимаются в виде единой системы. Сетевые ОС, с другой стороны, объединяют разные компьютеры, работающие под управлением своих ОС, так что пользователи могут получать доступ к локальным службам каждого из узлов.
Современные РС обычно содержат поверх сетевой ОС промежуточный слой ПО (middleware), предназначенный для того чтобы скрыть гетерогенность и распределенную природу базового набора компьютеров. РС с промежуточным слоем требуют специфическую модель распределения и связи. Известные модели основаны на удаленном вызове процедур, а также на распределенных объектах, файлах и документах.
Для каждой РС важна схема ее внутренней организации. Наиболее распространенная модель – Клиент-сервер. Эта модель тесно связана с традиционным программированием, в котором службы реализуются в виде процедур в отдельных модулях. Дальнейшее уточнение обычно состоит в подразделении на уровень пользовательского интерфейса, уровень обработки и уровень данных. Сервер обычно отвечает за уровень данных, а уровень пользовательского интерфейса реализуется на стороне клиента. Уровень обработки может быть реализован на клиенте, на сервере или разделен между ними.
В современных РС для построения крупных систем такой вертикальной организации приложений модели клиент-сервер недостаточно. Необходимо горизонтальное распределение, при котором клиенты и серверы физически распределены и реплицируются на несколько компьютеров. Типичным примером успешного применения горизонтального распределения является Web.