Файл: Технология построения распределенных информационных систем (Принципы организации распределенной обработки информации).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 04.07.2023

Просмотров: 353

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

На уровне программного обеспечения разделение на клиента и сервер является логическим: процессы клиента и сервера могут физически размещаться как на одной, так и на разных машинах. Так в рассмотренных выше архитектурных построениях при размещении процессов клиента и сервера на одной машине (обычно принято называть эту машину звеном, или ярусом — от англ. «tier») говорят об однозвенной реализации архитектуры клиент/сервер, а при размещении процессов клиента и сервера соответственно на двух разных машинах говорят о двухзвенной реализации такой архитектуры. Таким образом под общим концептуальным названием модели «клиент/сервер» скрывается несколько вариантов архитектурного построения вычислительных систем, а именно архитектуры однозвенные, двухзвенные, трехзвенные и т. д. (обычно при числе звеньев более трех архитектуру называют многозвенной).

Однозвенная архитектура вырождается в классическую архитектуру с централизованной обработкой информации. В двухзвенной архитектуре приложение разделено на две части: клиентскую и серверную. Возможные варианты распределения слоев прикладного программного обеспечения в двухзвенной архитектуре представлены на рисунке 1.1. Обычно сторона клиента содержит логику представления, а логика доступа к данным (как правило СУБД) и сама база данных находятся на стороне сервера. Алгоритмы бизнес-логики могут быть размещены либо полностью на стороне сервера (конфигурация так называемого «тонкого» клиента, рисунок 1.1б), либо частично или полностью на машине клиента вместе с логикой представления (конфигурация так называемого «толстого» клиента, рисунок 1.1в,1.1г). В случае размещения на стороне клиента лишь части логики представления, минимально достаточной для функционирования клиента (что характерно для современных архитектур так называемых «терминальных», или «бездисковых», рабочих станций), конфигурация обычно носит наименование «сверхтонкого» клиента (рисунок 1.1а).

Главными недостатками двухзвенной архитектуры являются необходимость либо наличия высокопроизводительных машин-клиентов, либо относительно высокие требования к производительности сервера. Размещение в последнем случае на сервере как бизнес-логики, так и логики доступа к данным приводит не только к чрезмерной нагрузке сервера, но и к снижению гибкости его работы и универсальности построения.

логика

представления

а

логика

представления

клиент сервер

бизнес-

логика


логика

доступа к

данным

б

бизнес-

логика

логика

доступа к

данным

логика

представления

в

логика

доступа к

данным

логика

представления

г

бизнес-

логика

логика

доступа к

данным

логика

представления

логика

представления

бизнес-

логика

бизнес-

логика

Рисунок 1.1- Варианты построения двухзвенных архитектур клиент/сервер (конфигурации: а — «сверхтонкий» клиент; б — «тонкий» клиент; в, г — «толстый» клиент)

Стремление повысить гибкость и масштабируемость многопользовательской распределенной системы привело к архитектурным решениям с тремя и более звеньями. С середины 1990-х годов интенсивное практическое внедрение получила трехзвенная архитектура, которая, как и двухзвенная, поддерживает концепцию «клиент/сервер», но разделяет систему по функциональным границам между тремя слоями: логикой представления, бизнес-логикой и логикой доступа к данным (рисунок 1.2). В трехзвенной архитектуре появилось дополнительное звено (так называемый «сервер приложений»), целиком предназначенное для реализации бизнес-логики. Трехзвенная архитектура позволила более явно отделить прикладную логику от пользовательского интерфейса и уровня баз данных. Так как в трехзвенной архитектуре под бизнес-логику обычно выделяется отдельная машина-сервер, то это повышает гибкость распределенной системы (поскольку все три слоя отделены друг от друга, то становится возможным относительно легкое изменение либо перемещение любого из них без существенного влияния на остальные слои).

клиент сервер сервер БД

приложений (СУБД)

логика

представления

бизнес-

логика

логика

доступа к

данным

Рисунок 1.2- Вариант построения трехзвенной архитектуры клиент/сервер

Характерным примером использования трехзвенной архитектуры являются веб-приложения, которые реализуются посредством трех компонентов: веб-браузера клиента, веб-сервера и реляционной базы данных. Именно выделение бизнес-логики в отдельное звено позволяет преодолеть фундаментальные ограничения двухзвенной архитектуры. Клиенты в этом случае не поддерживают постоянного соединения с базой данных, а обмениваются информацией со средним звеном только тогда, когда это необходимо. В то же время процесс среднего звена поддерживает всего несколько активных соединений с базой данных, но использует их многократно. Поэтому процессы в среднем звене могут предоставлять обслуживание теоретически неограниченному числу клиентов.


Дальнейшее увеличение гибкости и масштабируемости распределенных систем достигается переходом к многозвенным архитектурам, включающим более чем три звена, и соответствующим распределением слоев прикладного программного обеспечения (и их частей) по разным машинам. Например, слой логики доступа к данным может быть разделен на СУБД и собственно базу данных, хранимую на отдельном устройстве (или группе устройств). Такая конфигурация отражает реализацию распределенной СУБД (рисунок 1.3.).

клиент сервер сервер БД

приложений СУБД

логика

представ-

ления

бизнес-

логика

логика

доступа к

данным

логика

доступа к

данным

Рисунок 1.3- Вариант построения четырехзвенной архитектуры клиент/сервер

Перенос основных операций приложения на отдельный уровень позволяет с максимальной эффективностью распределить нагрузку на аппаратные устройства (трехзвенная модель на самом деле может быть многозвенной с разделением нагрузки на несколько серверов приложений) и обеспечивает безболезненное наращивание как функциональности приложения, так и числа обслуживаемых пользователей.

  1. Механизмы реализации распределенной обработки информации

2.1 Механизм удаленного вызова процедур

Синхронный режим коммуникаций между двумя прикладными модулями (клиентом и сервером) поддерживает спецификация удаленного вызова процедур (remote procedure call — RPC). Для установки связи, передачи вызова и возврата результата клиентский и серверный процессы обращаются к специальным компонентам — клиентскому и серверному переходникам, или заглушкам (от англ. stub — заглушка, переходник). Эти stub-процедуры не реализуют никакой прикладной логики и предназначены только для организации взаимодействия удаленных (в общем случае) прикладных модулей. Каждая функция на сервере, которая может быть вызвана удаленным клиентом, должна иметь такой процесс.

При вызове клиентом удаленной процедуры вначале выполняется локальный вызов процедуры, являющейся частью клиентского переходника. Локальный вызов вместе с параметрами передается клиентскому переходнику. При этом с помощью специального языка описания интерфейсов (Interface Definition Language — IDL) производится определение интерфейса процедуры, то есть описание параметров процедуры, передаваемых ей до выполнения RPC и возвращаемых после завершения RPC. Затем это описание транслируется и производится упаковка данных в формат сообщения — маршалинг (marshaling). Клиентский переходник вызывает локальную операционную систему, которая пересылает сообщение удаленной операционной системе сервера. Удаленная операционная система передает сообщение серверному переходнику, реализующему серверную часть вызова и состоящему из программ получения запроса от клиента, форматирования данных (демаршалинг), вызова реальной процедуры (реализованной на сервере) и возврата результатов клиенту. Клиент блокируется и ждет ответа, а на сервере запускается серверный переходник, преобразующий сообщение в параметры локальной процедуры. Сервер видит вызов как прямое обращение к его локальной процедуре с нужными параметрами, выполняет вызов и передает результаты серверному переходнику. Серверный переходник форматирует результаты работы процедуры в сообщение для клиента и вызывает локальную операционную систему сервера. Операционная система сервера пересылает сообщение операционной системе клиента. Клиент выводится из состояния ожидания, его операционная система принимает сообщение и направляет его клиентскому переходнику, который извлекает результаты из сообщения, передает их клиенту и возвращает клиенту управление.


Принципиальная схема организации удаленного вызова процедур представлена на рисунок 2.1.

клиент сервер

Уровень

процесса

Вызывающий

процесс

Уровень

реализации

RPC

Клиентский

переходник

вызов

возврат

ОС клиента

Уровень

процесса

Вызываемая

процедура

Уровень

реализации

RPC

Серверный

переходник

ОС сервера

возврат

вызов

сеть

возврат

вызов

Рисунок 2.1- Принципиальная схема организации удаленного вызова процедур

2.2 Объектно-ориентированный подход к организации распределенной обработки информации

Объектно-ориентированный подход способствует значительному усовершенствованию механизмов организации распределенной обработки информации. Важнейшим свойством объектов (object) является то, что они позволяют скрыть свое внутреннее строение посредством наличия строго определенного интерфейса. Поэтому при замене или изменении объектов интерфейс может оставаться неизмененным. Вследствие этого возможно относительно легкое распространение и применение принципов RPC к удаленным объектам.

Объекты инкапсулируют данные, называемые состоянием (state), и операции над этими данными, называемые методами (method). Для доступа или манипулирования состоянием объекта нужно использовать методы, обращение к которым осуществляется через интерфейсы. Объект может реализовывать множество интерфейсов, а для данного описания интерфейса может существовать несколько объектов, предоставляющих его реализацию.

Для распределенных систем разделение на интерфейсы и объекты позволяет помещать интерфейсы на одну вычислительную машину, а сами объекты — на другую. Принципиальная схема организации механизма удаленных объектов представлена на рисунок 2.2. При выполнении клиентом «привязки» к распределенному объекту в адресное пространство клиента загружается реализация интерфейса объекта, называемая заместителем (proxy). Заместитель клиента аналогичен клиентскому переходнику в механизме RPC. Он выполняет маршалинг параметров в сообщения при обращении к методам, демаршалинг данных из ответных сообщений с результатами обращения к методам, передачу результатов клиенту. Сами же объекты находятся на сервере и предоставляют необходимые клиентской системе интерфейсы. Входящий запрос на обращение к методу сначала попадают в так называемый серверный каркас, или скелетон (skeleton), аналогичный серверному переходнику в RPC. Cерверный каркас преобразует входящий запрос в обращение к методу через интерфейс объекта, находящегося на сервере. Каркас также отвечает за маршалинг параметров в ответных сообщениях и их пересылку заместителю клиента. Если объект физически распределен по нескольким вычислительным машинам, то это скрывается от клиентов за интерфейсами объектов.


клиент сервер

Клиентский

процесс

Клиентский

заместитель

вызов

возврат

ОС

клиента

Объект

Серверный

каркас

возврат

вызов

сеть

возврат

вызов

ОС

сервера

Интерфейс

Интерфейс

Рисунок 2.2- Принципиальная схема организации механизма удаленных объектов

Форма существования объектов в распределенных системах чаще всего соответствует объектам выбранного объектно-ориентированного языка программирования. Такие объекты представляют собой так называемые объекты времени компиляции. Использование этих объектов в распределенных системах обычно значительно упрощает создание распределенных приложений. Недостатком использования таких объектов является их зависимость от конкретного языка программирования. Альтернатива состоит в создании распределенных объектов непосредственно во время выполнения. При этом подходе распределенные приложения не зависят от конкретного языка программирования и они могут быть созданы из объектов, написанных на различных языках. При работе с такими объектами времени исполнения для превращения конкретной программной реализации в объект, методы которого будут доступны с удаленной вычислительной системы, используется адаптер объектов, служащий оболочкой этой реализации с целью придания ей реализации видимости объекта.

Объекты подразделяются на сохранные (persistent) и транзитные, или нерезидентные (transient). Сохранный объект не зависит от своего текущего сервера и продолжает существовать, даже не находясь постоянно в адресном пространстве серверного процесса. Сервер, управляющий таким объектом, может сохранить состояние объекта во вспомогательном запоминающем устройстве и прекратить свою работу, а затем после запуска снова прочитать состояние сохранного объекта из запоминающего устройства в свое адресное пространство и приступить к обработке обращений к объекту. Нерезидентный объект существует, пока им управляет сервер. Если сервер завершает работу, то такой объект прекращает существовать.

Системы, поддерживающие распределенные объекты, обычно предоставляют ссылки на объекты, уникальные в пределах системы. Такие ссылки могут свободно передаваться между процессами, запущенными на различных вычислительных машинах, например, как параметры обращения к методу. Перед обращением к методу объекта по его ссылке сначала выполняется привязка (явная или неявная), в результате создается заместитель объекта, реализующий интерфейс с методами, к которым обращается процесс. Для выполнения привязки система находит сервер, управляющий объектом, и помещает заместитель объекта в адресное пространство клиента. В результате обеспечения таким образом непрозрачности реализации ссылок на объекты (сокрытия истинной реализации ссылок) достигается повышенная прозрачность распределения по сравнению с традиционным механизмом RPC.