АРИС Текст 2. Водяхо А. И., Выговский Л. С., Дубенецкий В. А., Цехановский В. В. Архитектурные решения информационных систем
Скачать 4.65 Mb.
|
Контрольные вопросы1. Охарактеризуйте понятие архитектурный стиль. 2. Перечислите и охарактеризуйте основные архитектурные стили. 3. Перечислите и охарактеризуйте группы архитектурных стилей. 4. Охарактеризуйте архитектурный стиль, приведите пример его использования 5. Охарактеризуйте архитектурный стиль пакетно-последовательная обработка, приведите примеры его использования. 6. Охарактеризуйте архитектурный стиль конвейеры и фильтры и приведите примеры его использования. 7. Охарактеризуйте архитектурный стиль программа-сопрограммы и приведите примеры его использования. 8. Охарактеризуйте архитектурный стиль объектно-ориентированные системы и приведите примеры его использования. 9. Охарактеризуйте архитектурный стиль клиент-серверные системы и приведите примеры его использования. 10. Охарактеризуйте архитектурный стиль иерархические многоуровневые системы и приведите примеры его использования. 11. Охарактеризуйте архитектурный стиль система взаимодействующих процессов и приведите примеры его использования. 12. Охарактеризуйте архитектурный стиль системы, управляемые событиями и приведите примеры его использования 13. Охарактеризуйте архитектурный стиль системы, основанные на использовании централизованной базы данных и приведите пример его использования. 14. Охарактеризуйте архитектурный стиль системы, использующие принцип классной доски и приведите примеры его использования 15. Охарактеризуйте архитектурный стиль интерпретаторы и приведите примеры его использования. 16. Охарактеризуйте архитектурный стиль системы, основанные на правилах и приведите примеры его использования. 17. Сформулируйте условия, при которых целесообразно использования каждого из рассмотренных архитектурных стилей. ГЛАВА 3. АРХИТЕКТУРА И ОРГАНИЗАЦИЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ 3.1. Понятие распределенной системы. Классификация распределенных систем Существует очень много различных определений понятия «распределенные системы» (РС), причем не одно из них нельзя назвать единственно правильным. В дальнейшем под распределенной системой будем понимать множество автономно работающих компьютеров, связанных между собой последовательными каналами связи, в качестве которых могут выступа, в частности, локальные и глобальные сети. В одних случаях пользователь в явном виде обращается к конкретному ресурсу, в том числе и удаленному ресурсу. В других случаях использование специального программного обеспечения позволяет пользователю работать с удаленным вычислительным ресурсом. При этом пользователь не знает, работает он с удаленным или локальным ресурсом. Таким образом, логическая структура РС может отличаться от ее физической структуры. Важным является то, что на физическом уровне используется несколько однотипных или разнотипных компьютеров, связанных через локальную или глобальную сеть. Подробную информацию о принципах организации и функционирования РС можно найти, например в [23]. Ниже рассмотрены некоторые типовые подходы к построению РС. Схема классификации РС показана на рис. 3.1. РС можно классифицировать по следующим основным признакам: структура, распределение функций между компьютерами, формат обмена, способы взаимодействия между компьютерами, типы ресурсов, используемая парадигма программирования. Рис. 3.1. Классификация РС РС может состоять из однотипных или разнотипных компьютеров. В первом случае РС называют однородной или гомогенной, а во втором – неоднородной или гетерогенной. РС может иметь постоянную или переменную структуру, например, если компьютеры установлены на подвижных объекта. С точки зрения распределения функций между компьютерами можно выделить 2 типа РС: клиент-серверные и одноранговые (peer to peer, P2P). В клиент-серверных системах можно выделить компьютер-клиент и компьютер сервер. Клиент посылает запрос серверу, а сервер отвечает клиенту. Инициатором диалога всегда выступает клиент. В P2P системах клиент и сервер могут меняться местами. Компьютеры, входящие в состав РС могут поддерживать разные форматы обмена. В простейшем случае компьютеры обмениваются данными. Это могут быть целые, строки символов, структуры данных. Обмен может осуществляться через буфер, в качестве которого может выступать файл. При этом передающая и принимающая сторона знают, какие именно данные передаются. В более сложном случае, передающая стороны посылает сообщение, которое кроме собственно данных может содержать дополнительную информацию, такую как идентификатор источника, идентификатор приемника, временные отметки, описание структуры передаваемых данных и т.д. Обычно эти сообщения передаются не напрямую получателю, а поступают в специальную подсистему доставки сообщений, где они хранятся, обрабатываются и передаются приемнику. Компьютер-источник, компьютер-приемник и подсистема передачи сообщение должны знать формат передаваемых сообщений. Сообщение передается через канал связи как массив битов. Такой механизм достаточно хорошо работает в 2 случаях, если компьютер-источник и компьютер-приемник принадлежат одному владельцу, либо если всем участником обмена удается договориться о формате обмена, например, в случае электронной почты. Если участники обмена не могут договориться о структуре сообщения, то они договариваются о способе описания структуры сообщения. Если в сообщении содержится описание его структуры, то говорят о самоописываемых данных. Кроме данных компьютеры, входящие в состав РС могут обмениваться файлами или документами. В РС системах реализуются 3 основных способа взаимодействия между компьютерами: синхронный, асинхронный и обратный вызов. При синхронном обмене клиент посылает серверу запрос и ожидает ответ. Если сервер не отвечает, то клиент переходит в режим ожидания, из которого может выйти, например по таймеру. При синхронном режиме компьютер-источник посылает сообщение одному или нескольким приемникам и не ожидая ответа продолжает работу. Механизм обратного вызова (Callback) предполагает, что клиент и сервер меняются местами. Сначала клиент вызывает сервер и может, например, передать ему свой адрес. После этого сервер берет на себя функции клиента и вызывает с клиента, который начинает выполнять функции сервера. С точки зрения используемых ресурсов можно выделить 2 основных варианта: физические ресурсы и виртуальные ресурсы. Физический ресурс – это например, реальный компьютер, на котором выполняется задание пользователя. Виртуальный ресурс – это программная модель. На мощном компьютере можно, например, запустить несколько виртуальных машинах, работающих с разными операционными системами. Существует большое количество разных подходов (парадигм) к построению РС. К основным подходам можно отнести следующие: взаимодействие удаленных процессов через сокеты, вызов удаленных процедур, клиент-серверные системы, распределенные файловые системы, удаленное выполнение работ, распределенные системы объектов (РСО), микроядерные архитектуры, промежуточное программное обеспечение (ПО), обмен сообщениями, распределенные системы документов, мультиагентные системы. Взаимодействие удаленных процессов через сокеты – это самый низкий уровень, на котором работает обычный прикладной программист. Сокет подобен FIFO файлу, который доступен как процессу писателю, так и процессу-писателю. Вызов удаленных процедур (Remote Procedure Call, RPC) – это механизм, который позволяет прикладному программисту вызывать процедуры, которые выполняются на другом компьютере. В основе своей RPC ориентирована на процедурное программирование. Клиент-серверные системы (КСС) – это одна из старейших и наиболее часто используемых парадигм. Идея классической КСС состоит в том, что приложение состоит из 2 частей: клиентской части и серверной части. Клиентская часть работает на клиентском компьютере, а серверная – на сервере. В простейшем случае серверная часть представляет собой СУБД, к которой могут подключаться клиенты, находящиеся в той же локальной сети. В более сложных случаях к СУБД можно подключиться через Интернет. Идея распределенных файловых систем состоит в монтировании удаленных файловых систем или их частей. Это позволяет получать доступ к файлам, находящимся на других компьютерах. Идея выполнения заданий на одном или нескольких компьютерах является одной из старейших парадигм распределенных вычислений. В качестве современного представителя можно рассматривать грид технологии и облачные технологии. Систему распределенных объектов можно рассматривать как версию RPC для объектно-ориентированных систем. Идея микроядерной архитектуры состоит в том, что пользователь может запускать процессы на удаленном компьютере так же просто как на локальном. Идея промежуточного программного обеспечения (middleware) состоит в том, что создается некоторый контейнер, в которой можно помещать программные модули, которые называют компонентами. Прикладной программист может обращаться к ним, не зная, где они находятся и на каком языке написаны. Обычно компонент устанавливает в контейнер системным администратором, который создает специальный дескриптор. В отличие от объекта компонент обычно не связан с определенным языком программирования. Системы, использующие механизмы обмена сообщениями очень популярны и популярность постоянно растет. Системы, относящиеся к данному классу характеризуются тем, что взаимодействие между отдельными подсистемами осуществляется посредством посылки сообщений, т.е. реализуется асинхронный механизм взаимодействия. Распределенные системы документов предоставляют пользователю высокоэффективное средство для обмена информацией. Самой распространенной системой распределенных документов, безусловно является World Wide Web (WWW). Наряду с WWW имеются и другие системы работы с документами, например, широкое распространение получила система Lotus Notes, ориентированная на поддержку корпоративного документооборота. Мультиагентные системы (МАС) можно рассматривать как подход к созданию РС, в соответствии с которым приложение состоит из отдельных модулей (агентов) которые могут обмениваться сообщениями на специальном языке, согласуя свои действия. Упомянутые подходы будут рассмотрены более подробно в последующих параграфах настоящей главы. 3.2. Архитектурные стили, используемые при построении РС Существует достаточно много различных классификаций архитектурных стилей [24, 25, 26, 27, 28, 29]. Архитектурные стили, рассмотренные в главе 2, никаким образом не привязаны к составу используемых аппаратных средств. Действительно, если используется промежуточное ПО, то прикладной программист избавлен от необходимости реализовывать сетевые взаимодействия. Однако ориентация на использование промежуточного ПО не всегда является лучшим решением, особенно если речь идет о системах реального времени. Кроме этого, разработчикам промежуточного ПО приходится реализовывать сетевые взаимодействия. Классификация архитектурных стилей, учитывающих специфику сетевых взаимодействий приведена на рис. 3.2 [30]. Эту классификацию можно рассматривать как расширение классификации архитектурных стилей, описанных в главе 2. В рамках рассматриваемой классификации выделяется 5 групп стилей: потоки данных, репликация репозитария, иерархические системы, одноранговые системы, мобильный код. Архитектурный стиль потоки данных (Data Flow Systems) практически идентичен описанному в главе 2 стилю, В [30] предлагается различать Однородные системы, построенные по принципу конвейер-фильтр (Pipe and Filter, PF) и неоднородные. В ИС, использующих архитектурный стиль потоки данных, поток данных поступает на вход первого элемента, который выполняет функции фильтра, обрабатывается, и передается на вход второго элемента (фильтра) т.д. Система работает в конвейерном режиме, т.е. обработка следующего набора данных может начинаться сразу после того, как ступень конвейера освободилась. Движение данных по конвейеру однонаправленное, хотя не исключается наличие в конвейере обратных связей. Существует достаточно много практически значимых задач, для которых могут быть использованы конвейерные методы обработки. Это, прежде всего, задачи обработки сигналов и изображений. К группе Репликация, относят 2 стиля: Репликация репозитария (Replicated Repository, RR) и Кэши (Cache). Идея стиля RR состоит в том, что для повышения показателя доступности и масштабируемости для реализации одного и того же сервиса используется несколько процессов. При этом у пользователя создается иллюзия, что сервис существует в единственном экземпляре. Этот стиль давно и успешно используется при построении веб-серверов, ftp-cерверов, распределенных файловых систем и т.п. Рис. 3.2. Классификация сетевых архитектурных стилей Идея стиль типа Кэши основывается на том, что очень часто запросы, поступающие к серверу повторяются. В этом случае с целью уменьшения нагрузки на сервер и уменьшения задержек целесообразно запоминать (кэшировать) результаты запросов. Обычно этот стиль применяется в клиент-серверных системах. Кэш может быть размещен на стороне клиента, на стороне сервера или между клиентом и сервером. Можно выделить 2 подхода к построению кэша. В первом случае используется пассивный (ленивый, lazy) кэш, который просто запоминает результаты запросов. Во втором случае используется активный кэш, который пытается угадать какие данные потребуются пользователю. Это стиль используется достаточно часто, когда браузер снабжается кэшем, при построении серверов имен (DNS) т. д. Группа стилей Иерархические системы включает следующие стили: Клиент-серверные системы, Многослойные системы, Многослойные клиент-серверные системы, Сервер без сохранения состояния, Сервер без сохранения состояния с кэшированием на стороне клиента, Удаленная сессия, Удаленный доступ к данным. Клиент-серверный стиль – один из самых распространенных сетевых стилей. В самом общем виде идея состоит в следующем. Серверный компонент предлагает набор сервисов. После запуска он переходит в режим ожидания запросов от клиентов. Клиент может посылать запрос в произвольный момент времени. Сервер может либо принять, либо отвергнуть запрос. Если запрос принят, то сервер его выполняет, а по выполнению посылает ответ клиенту. Известно много разных подходов к реализации клиент-серверных систем. Многослойные системы состоит из нескольких слоев, каждый из которых предоставляет сервисы ближайшему внешнему слою и может пользоваться сервисами, которые предлагает ближайший внутренний слой. Примером данного стиля может служить такие широко известные стеки протокол как TCP/IP и OSI [23]. В чистом виде при реализации сетевых приложений используется относительно редко. Чаще всего он используется совместно с клиент-серверным стилем, образуя двух- и трехслойные клиент-серверные системы. Использование многослойных клиент-серверных систем вместо однослойных позволяет создавать гибкие системы, однако появляются дополнительные, задержки, связанные с необходимостью организовывать взаимодействие между слоями. Архитектурный стиль Сервер без сохранения состояния можно рассматривать как частный случай клиент-серверного стиля. Идея сервера без сохранения состояния состоит в том, что каждый запрос содержит всю необходимую информацию для выполнения запроса, что позволяет серверу не запоминать информацию о выполненных запросах. Это очень упрощает структуру сервера, но ограничивает его функциональные возможности и в ряде случаев усложняет клиентскую часть приложения. Архитектурный стиль Сервер без сохранения состояния с кэшированием на стороне клиента является комбинацией Сервер без сохранения состояния и Кэши. Идея состоит в том, что ответы сервера на запросы клиента запоминаются в кэше на стороне клиента. Клиент всегда сначала обращается к собственному кэшу, а если не находит там требуемых данных, то тогда обращается к серверу. Дальнейшим развитием стиля Сервер без сохранения состояния с кэшированием на стороне клиента является стиль Многослойный сервер без сохранения состояния с кэшированием. Этот стиль является комбинацией 3 ранее рассмотренных стилей: Многослойные клиент-серверные системы, Сервер без сохранения состояния и кэши. Отличительной особенностью этого стиля является использование многослойного сервера, каждый из слоев, кроме центрального может иметь собственный кэш. Система работает следующим образом. Перед тем как обратиться к серверу, клиент проверяет наличие требуемой информации в собственном кэше. Если информация там отсутствует, то клиент обращается к серверу нижнего уровня. Сервер нижнего уровня перед тем как отправить запрос проверяет свой кэш на наличие требуемой информации и т.д. Только сервер самого верхнего уровня не имеет кэша и функционирует как сервер без сохранения состояния. Примером практического применения этого стиля может служить система доменных имен Интернет (DNS) [31]. Идея архитектурного стиля Удаленная сессия состоит в том, пользователь, имея простейший терминал, может работать с одним или несколькими удаленными компьютерами. Данный стиль можно рассматривать как упрощенный вариант Клиент-серверного стиля, когда практически вся функциональность реализуется на сервере. Клиентский терминал поддерживает только графический интерфейс пользователя. Этот стиль был достаточно популярен в те времена, когда не было персональных компьютером или они были очень дорогие. В настоящее время некоторое применение находит протокол TELNET [31]. Архитектурный стиль Удаленный доступ к данным – один из самых распространенных стилей. Это один из вариантов клиент-серверных систем. В данном случае в качестве сервера выступает СУБД, Клиент посылает стандартные SQL запросы, сервер выполняет их и возвращает клиенту результат. Группа стилей Одноранговые системы включает в себя следующие стили: С2, Системы, управляемые событиями, Распределенные объекты, Брокеры распределенных объектов. Архитектурный стили С2 (components and connectors) ориентирован на создание крупномасштабных модульных систем. Идея данного стиля состоит в том, что ИС строятся из некого конструктора, включающего множество совместимых друг с другом элементов и коннекторов. Обычно это системы, основанные на обмене сообщениями. Идея стиля Системы, управляемые событиями состоит в том, что отдельные подсистемы обмениваются сообщениями, причем сообщения могут быть широковещательные. Отдельные подсистемы могут выражать заинтересованность в получении событий, относящимся к определенным классам. Архитектурный стиль Распределенные объекты предполагает, что система состоит из множества компонентов, которые могут взаимодействовать друг с другом. Каждые объект инкапсулирует данные, которые описывают состояние объекта и набор методов, с помощью которых можно получить доступ к данным. Можно считать, что состояние системы определяется как совокупность состояний объектов. Объекты могут находиться на одном или разных компьютерах. Архитектурный стиль Брокеры распределенных объектов является дальнейшим развитием стиля Распределенные объекты. Появление рассматриваемого стиля вызвано тем, что по мере усложнения систем распределенных объектов стала очевидна необходимость создание некоторого промежуточного программного обеспечения, которое взяло бы на себя все черновую работу, такую как нахождение объектов, создание объектов, сохранение состояния объектов. Идея брокеры распределенных объектов состоит в том, что обращение идет не к самому объекту а брокеру, который может найти объект по имени, если объект еще не создан, то создать его и т.п. Этот стиль был очень популярен в конце девяностых и начале нулевых годов. В настоящее время он активно вытесняется веб-сервисами. Группа стилей Мобильный код включает 5 стилей: Виртуальные машины, Удаленное выполнение, Код по запросу, Многослойный код по запросу с сервером без сохранения состояния и кэшированием, Мобильные агенты. Архитектурный стиль Виртуальные машины совпадает с описанным в главе 2. Этот стиль обычно использует совместно с 4 другими стилями данной группы. Архитектурный стиль Удаленное выполнение представляет собой комбинацию стилей Клиент-сервер и Виртуальные машины. Этот стиль используется в случае, если на стороне клиента недостаточно ресурсов для выполнения сгенерированного кода. Идея состоит в том, что клиент посылает код на сервер, он выполняется, а результат пересылается серверу. Обычно выполнение кода на сервере выполняется в некотором контейнере, при этом доступ исполняемого кода к ресурсам сервера ограничено. Следует заметить, что компьютерные вирусы активно используют этот стиль. Архитектурный стиль Код по запросу во многом похож на предыдущий стиль- код пересылается по сети, выполняется на сервере, а результат передается клиенту. Разница состоит в том, что при использовании стиля код по запросу, сервер, получив запрос от клиента, запрашивает необходимый для выполнения код. Обычно требуемый код хранится на еще одном сервере. В этом смысле стиль Код по запросу можно рассматривать как расширение стиля Удаленное выполнение. Архитектурный стиль Многослойный код по запросу с сервером без сохранения состояния и кэшированием представляет собой комбинацию стилей Код по запросу, Сервер без сохранения состояния и Кэши. Примером может служить браузер в который с сервера загружаются различные плагины, расширяющие его функциональность. Идея Архитектурного стиля Мобильные агенты состоит в том, что некоторый фрагмент кода перемещается от одного компьютера к другому, сохраняя свое состояние. Предполагается, что, если объем кода небольшой, а объем обрабатываемых данных очень большой, то можно резко сократить объем пересылок. Например, если требуется просмотреть несколько баз данных для того, чтобы найти одну или несколько наборов данных, быстрее и проще переслать код на сервер, где будет выполнена обработка. Кроме того, этот стиль может быть использован для балансировки нагрузки между серверами. Если один сервер в сети является перегруженным, а другой недогруженным, то одно или несколько приложений могут мигрировать с перегруженного на недогруженный сервер. Данный стиль используют также программы-вирусы. В табл. 3.1 показаны соответствия между парадигмами и сетевыми архитектурными стилями. Таблица 3.1. Соответствия между парадигмами и сетевыми архитектурными стилями
Значок + указывает на то, что данная парадигма может использоваться для реализации соответствующего стиля. В табл. 3.1. используются следующие обозначения: RPC Remote Procedure Call, КСС – клиент-серверная система, РФС – распределенная файловая система, МЯ - Микроядро, УВР – удаленное выполнение работ, РСО – распределенные системы объектов, ППО – промежуточное ПО, ОбмС – обмен сообщениями, РСД - распределенная система документов, МАС мультиагентгая систем. |