Архитектура информационных систем. Часть 1. Учебное пособие
.pdf
Уровень представления
Уровень бизнеслогики
Уровень
данных
Интерфейс
пользователя
Cписок в виде
HTML-страницы
Искомое выражение (ключевые слова) Формирователь
HTML-страниц
Генератор запросов Модуль
упорядочивания
результатов запросов
Запросы к БД
Заголовки веб-страниц с метаданными
База данных веб-страниц
Рис. 16. Организация поисковой машины для Интернет
Контрольные вопросы
1.Каковы особенности централизованной архитектуры, её преимущества и недостатки?
2.Каковы особенности автономной архитектуры, её преимущества и недостатки?
3.Дайте понятие распределённой вычислительной системы.
4.Дайте понятие промежуточного ПО. Какие функции оно выполняет в распределённой вычислительной системе?
5.В чём заключается суть клиент-серверной архитектуры?
6.Какие уровни выделяются в приложениях для их реализации на основе клиент серверной архитектуры? Укажите их основное назначение.
41
7.Каков принцип построения двухзвенной клиент-серверной архитектуры с файл-сервером? Дайте характеристику этой архитектуры.
8.Каков принцип построения двухзвенной клиент-серверной архитектуры с сервером баз данных? Дайте характеристику этой архитектуры.
9.Каков принцип построения трёхзвенной клиент-серверной архитектуры с сервером приложений? Дайте характеристику этой архитектуры.
10.Каков принцип построения трёхзвенной клиент-серверной архитектуры на основе Internet/Intranet?
11.Приведите пример организации поисковой машины для
Internet.
6.Архитектурные стили
6.1. Понятие и разновидности архитектурных стилей
Архитектурный стиль ИС представляет собой набор типовых архитектурных решений (подходов к проектированию), выработанных на основе опыта проектирования ИС.
Архитектурный стиль может быть определён типами функциональных компонентов, топологией и характером взаимодействия компонентов в процессе функционирования системы.
Не следует путать понятие архитектурного стиля с понятием паттерна (шаблона) проектирования. Паттерн в отличие от архитектурного стиля представляет собой фрагмент кода на некотором языке программирования. Отметим, что до сих пор отсутствуют стандартные языки описания архитектур.
Конкретная система может использовать несколько архитектурных стилей.
Может быть выделено пять групп базовых архитектурных стилей, которые объединяют двенадцать различных стилей [4]:
1.Системы, основанные на потоках данных (Data Flow Systems):
системы пакетно-последовательной обработки (Batch Sequential Systems);
системы типа конвейеры и фильтры (Pipe and Filter Architecture);
42
2.Системы, использующие вызов с возвратом (Call-and-Return Systems):
системы типа программа-подпрограммы (Main Program and Subroutines);
объектно-ориентированные системы (Object-Oriented Systems);
клиент-серверные системы (Client-Server Systems);
иерархические многоуровневые системы (Hierarchically Layered Systems).
3.Системы, использующие независимые компоненты (Independ-
ent Component Systems):
системы взаимодействующих процессов (Communicating Sequential Processes);
системы, управляемые событиями (Event-Based Systems).
4.Системы, использующие централизованные хранилища дан-
ных (Data-Centric Systems):
системы, основанные на использовании централизованной базы данных (Database Systems);
системы, использующие принцип классной доски (Blackboard Systems);
5.Системы, функционирующие по принципу виртуальной ма-
шины (Virtual Machines):
интерпретаторы (Interpreters);
системы, основанные на правилах (Rule-Based Systems).
6.2. Системы, основанные на потоках данных
6.2.1. Системы пакетно-последовательной обработки
Системы пакетно-последовательной обработки используют разбиение решаемой задачи на совокупность отдельных подзадач, предполагающих, как правило, последовательное выполнение. При этом результаты, полученные одной подзадачей, используются в качестве входных данных для последующей подзадачи. Как следствие, такие системы представляют собой набор линейно связанных программных модулей. Для хранения промежуточных данных может быть использована как основная память, так и файлы на
43
внешних запоминающих устройствах. В качестве средства управления процессом обработки обычно используются языки описания сценариев (скриптовые языки). Типовым примером системы па- кетно-последовательной обработки являются программы, написанные на командных языках операционных систем, в частности,
Unix shell.
6.2.2. Системы типа «конвейеры и фильтры»
Системы типа «конвейеры и фильтры» представляют собой обобщение систем пакетно-последовательной обработки. Рассмотрим отличительные особенности данных систем:
модули могут выполняться как на одном, так и на различных сетевых компьютерах;
результаты одного модуля могут использоваться в качестве входных данных для одного или нескольких других модулей по принципу конвейера;
для передачи данных между ступенями конвейера могут также использоваться специальные механизмы взаимодействия между процессами, например, аналогичными pipe в Unix;
конвейеры могут иметь, помимо линейных, также и обратные связи.
Примером применения систем данного типа является компилятор, который на входе получает исходный код программы и последовательно запускает следующие модули:
лексический анализатор (лексический анализ);
семантический анализатор (семантический анализ);
оптимизатор (оптимизация кода);
генератор кода (генерация кода на машинном языке).
6.3. Системы, использующие вызов с возвратом
Системы данной группы основаны на вызове клиентом серверной программы, причём в процессе обслуживания запроса сервером клиент простаивает в ожидании результата. После окончания обработки запроса сервер возвращает клиенту полученный результат.
44
6.3.1. Системы типа программа-подпрограммы
Основная программа управляет всем процессом выполнения и осуществляет вызов подпрограмм (функций), на которые возлагается реализация всех функциональных возможностей. Сами подпрограммы могут выполняться либо на том же компьютере, что и основная программа, либо на удаленном хосте (вызов удаленных процедур). Отметим, что программа и подпрограммы при этом выполняются последовательно. Данный стиль является, фактически, воплощением методологии структурного программирования.
Разновидностью подобных систем, в которых обеспечивается параллельное выполнение основной программы и подпрограммы, являются системы с архитектурой типа ведущий-ведомый (MasterSlave Architecture). При этом основная программа (ведущий процесс) осуществляет диспетчеризацию процесса обработки. Подпрограмма (ведомый процесс) выполняет полученное задание, и после его завершения готово к получению от ведущего процесса нового задания. Подобная архитектура может быть реализована на базе многопроцессорной системы, а также в сетевой среде.
6.3.2. Клиент-серверные системы
Клиент-серверные системы могут рассматриваться как разновидность систем типа программа-подпрограммы, в которых клиент и сервер располагаются на различных хостах. Клиент посылает серверу запросы и ожидает результаты их выполнения (данные, подтверждение выполнения команды). Серверы, как правило, обслуживают некоторое множеством клиентов.
Разновидностью клиент-серверных систем являются системы обработки транзакций9. Количество различных типов транзакций в системе обычно ограничено, а интенсивность их потока достаточно высока. Подобные системы широко применяются на практике, например, системы бронирования и продажи билетов, системы перевода денежных средств в банках, системы электронной торговли акциями и т.д.
9 Транзакция – группа логически объединённых последовательных операций над данными, обрабатываемая или отменяемая целиком.
45
6.3.3. Объектно-ориентированные системы
Объект программы представляет собой совокупность данных, характеризующих его состояние, и процедур их обработки, моделирующих его поведение. При этом объекты могут находиться как на одной, так и на разных машинах. Объекты взаимодействуют между собой либо посредством вызова процедур, либо посредством механизма сообщений. Каждый объект при этом может выполнять функции как клиента, так и сервера.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сервер 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Сервер 2 |
|
|
|
|
Сервер n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Объект 1 |
|
|
|
Объект 2 |
|
|
|
Объект k |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Объектная шина
Рис. 17. Пример структуры распределенной объектной системы
Преимуществами объектно-ориентированных систем являются:
возможность сокрытия данных от клиента, что позволяет модифицировать внутреннее описание объекта, без необходимости модификации и уведомления клиента;
возможность распараллеливания вычислений.
Одной из задач, требующих своего решения для обеспечения функционирования объектно-ориентированных систем, является предоставление объекту информации о расположении и интерфейсе некоторого другого объекта, который ему требуется использовать. Такая информация об объекте может предоставляться либо на основе статического подхода, либо динамически.
Одной из разновидностей объектов со специальными свойствами являются компоненты. Примерами широко известных компонентных систем являются CORBA, COM, EJB. Пример структуры распределенной объектной системы приведен на рис. 17.
6.3.4. Иерархические многоуровневые системы
Данные системы представляют собой совокупность подсистем, расположенных в различных уровнях (слоях) так, что взаимодей-
46
ствуют только подсистемы смежных слоёв. При этом каждый слой является виртуальной машиной для последующего слоя. Таким образом, каждый вышележащий слой функционирует в качестве клиента, а нижележащий – в качестве сервера. Взаимодействие между слоями осуществляется посредством предварительно определённых интерфейсов.
Данный стиль широко применяется при создании стеков протоколов, например, коммуникационных протоколов, а также операционных систем. В качестве примера на рис.18 приведена структура операционной системы. Современные ОС Windows строятся на основе двухуровневой организации
Ядро
Рис. 18. Операционная система как пример иерархической многоуровневой системы (трёхуровневой)
Преимуществом иерархических многоуровневых систем является высокая степень независимости между соями, в связи с чем обеспечивается возможность:
независимой разработки кода для отдельных слоёв;
независимой послойной модификации кода.
Вто же время далеко не все системы могут быть реализованы в виде многослойной архитектуры.
6.4. Системы, использующие принцип независимых компонент
6.4.1. Системы взаимодействующих процессов
Основа идеи взаимодействующих процессов заключается в следующем:
функционирование системы рассматривается как взаимодействие множества независимых процессов;
взаимодействие процессов осуществляется посредством передачи сообщений;
47
процессы и системы описываются специальными примитивами и операциями над ними;
введены алгебраические правила выполнения операций над процессами.
Такой подход был предложен и разработан Хоаром в 70-х гг. Наиболее известными вариантами применения этого подхода являются параллельные и многоагентные системы.
6.4.2. Системы, управляемые событиями
Системы, управляемые событиями, во многом аналогичны системам, работающим от прерываний. Прерывания и события сходны тем, что им соответствует некоторое асинхронное воздействие, на которое должна реагировать система.
В данных системах процесс обработки запускается только при наступлении соответствующего события. Примерами таких событий могут служить нажатие пользователем компьютера клавиши на клавиатуре или перемещение мыши, срабатывание таймера и т.д.
Принцип построения системы, управляемой событиями, показан на рис. 19. Источники событий генерируют события в системе. Диспетчер выполняет следующие функции:
|
|
|
|
Диспетчер событий |
|||||||
|
|
|
|
|
|
|
|
|
|
|
Обработчик событий 1 |
|
|
Источник событий 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обработчик событий 2 |
|
|
Источник событий 2 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Cобытие |
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Источник событий n |
|
|
|
|
|
|
|
|
Обработчик событий k |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 19. Принцип построения систем, управляемых событиями
получение и сохранение сигнала о событии, если оно не может быть принято в текущий момент;
учёт приоритетов и маршрутизация сигналов о событиях. Обработчик событий – это программа, которая запускается при
наступлении соответствующих событий для их обслуживания.
48
Можно выделить три частных случая (подстиля) систем, управляемых событиями:
централизованные системы (например, активные базы данных);
системы, используемые в промежуточном ПО (например, CORBA Event Service)
системы очередей сообщений.
Втаких системах, компоненты могут не знать о существовании других компонентов. Обработчик активируется при получении информации о наступлении события.
6.5. Системы, использующие принцип централизованных данных
Системы, использующие принцип централизованных данных, имеют в своей основе централизованное общедоступное хранилище информации, которое используется для хранения как данных, так и метаданных (знаний о данных). Данный принцип называют также принципом репозитария10.
Общпя структура системы, построенной по принципу репозитария, показана на рис.20.
Клиент |
Клиент |
|
Клиент |
Клиент |
|
|
Клиент
Рис. 20. Общая структура системы, построенной по принципу
Основными преимуществами данного подхода являются следующие:
10Репозитарий (от англ.«repository» – хранилище) – место, где хранятся и поддерживаются какие-либо данные.
49
ввод данных в систему осуществляется однократно, что сокращает затраты, устраняет дублирование и повышает достоверность ввода данных;
обеспечение доступа к общим данным для множества различных приложений;
предоставление возможности обмена данными между приложениями посредством репозитария;
повышение гибкости системы за счёт возможности масштабирования репозитария.
6.5.1. Системы, основанные на использовании централизованной базы данных
Для построения репозитариев могут быть использованы следующие подходы:
хранение информации в файлах файловой системы;
хранение информации в централизованном хранилище, например, для хранения сериализованных объектов11;
хранение информации в реляционных или объектоориентированных базах данных.
На практике чаще всего используются базы данных реляционного типа, которые в настоящее время применяются и для хранения знаний.
6.5.2. Системы, использующие принцип классной доски
Данные системы функционируют по аналогии с классной доской, на которой можно писать мелом, причём все участники обсуждения имеют доступ к написанному на доске. Структура системы, использующей принцип классной доски, показана на рис. 21. Так называемая «классная доска» представляет собой общую разделяемую память, реализованную в виде базы данных, в которой хранятся данные и знания о решении задачи.
11 Сериализация – процесс перевода структуры данных в последовательность битов для передачи объектов по сети и для сохранения их в файлы. Также существует обратная операция десериализации (структуризации) – восстановление начального состояния структуры данных из битовой последовательности. Может применяться для наборов научных данных большого объёма, таких как данные, получаемые от спутников, или численные модели климата, погоды, океанов и т.д. Для этих целей разработаны специальные бинарные стандарты сериализации, например HDF, netCD, GRIB.
50
