Многоуровневые архитектуры клиент-сервер.
Многоуровневая архитектура клиент-сервер — разновидность архитектуры клиент-сервер, в которой функция обработки данных вынесена на один или несколько отдельных серверов. Это позволяет разделить функции хранения, обработки и представления данных для более эффективного использования возможностей серверов и клиентов. Частные случаи многоуровневой архитектуры - трёхуровневая архитектура. Достоинства: ● централизованная защита; ●центральное хранилище данных; ●возможность совместного использования серверами доступных ресурсов; ●простая управляемость при большом числе пользователей. Недостатки: ●дорогое техническое обеспечение; ●дорогие серверные операционные системы и клиентские лицензии; ●необходимость привлечения высококвалифицированных сетевых и системных администраторов, организации специальных служб. Двухуровневые системы состоят только из клиента и сервера. В трехуровневых же между пользовательским клиентом и сервером, осуществляющим хранение и обработку БД появляется третий, промежуточный слой, являющийся для пользователя сервером, а для системы управления БД - клиентом. Такая архитектура позволяет более гибко распределять функции системы и нагрузку между компонентами программно-аппаратного комплекса, а также может снизить требования к ресурсам рабочих мест пользователей. В двухуровневой архитектуре 3 логические компоненты распределяют между 2мя физ.модулями. Обычно данные располагаются на сервере (например, сервере БД), интерфейс с пользователем на стороне клиента, а бизнес-логику распределяют между клиентской и серверной компонентой. В этом и заключается основной недостаток двухуровневой архитектуры, значительно усложняющий разработку программных решений под клиент/сервер. Чтобы избежать несогласованности различных элементов архитектуры, пытаются выполнять обработку данных на одной из 2х физ.частей либо на стороне клиента: – так называемый "толстый" клиент, либо на сервере: – "тонкий" клиент. Для решения перечисленных проблем используются многоуровневые (3 и более) архитектуры клиент/сервер. Такие архитектуры более оптимально распределяют компоненты обработки данных, которые в этом случае выполняются на одном или нескольких отдельных серверах. Данные компоненты выполняют функции сервера для интерфейсов с пользователями и клиента для серверов БД. Кроме того, различные серверы приложений могут взаимодействовать между собой, осуществляя точное разделение системы на функциональные блоки, выполняющие определенные роли. Трехуровневая архитектура клиент/сервер обеспечивает распределение полномочий пользователей, которые получают права доступа не к самой базе данных, а к определенным функциям сервера приложений. Характерной особенностью многоуровневых архитектур является использование менеджеров транзакций, которые позволяют одному серверу приложений одновременно обмениваться данными с несколькими серверами баз данных. (рис.)Различные стандарты взаимодействия могут применяться в различных связках узлов системы, а мосты встраиваться в любой узел или выделяться в своеобразные серверы приложений, с физическим выделением в узлах сети. Двигаясь между клиентами слева-направо на диаграмме, наблюдать переход между различными моделями распределенных вычислений - через intranet к Internet.. Архитектура Интернет/Интранет. Основа реализации ИС– принцип «открытой архитектуры». ИС, реализованная с использованием данной архитектуры, включает Web-узлы с интерактивным информационным наполнением, реализованных при помощи технологий Java, JavaScript, взаимодействующих с предметной БД, с одной стороны, и с клиентским местом с другой. БД является источником информации для интерактивных приложений реального времени.
43.Обработка транзакций в распределённых информационных системах. Транзакция – это логически завершенная последовательность действий над данными информационной системы, не нарушающая ограничения целостности. Логическая целостность означает, что удовлетворяются все ограничения, накладываемые на наборы данных моделью системы. Физическая целостность означает, что состояние файлов хранилища данных корректно, т. е. ни один из элементов хранилища не является испорченным с точки зрения СУБД. С т.з. пользовател я – последовательность операторов языка SQL, которая рассматривается как неделимое действие над БД. С т.з. программно-аппаратного комплекса – логическая единица работы, системы, реализующая некоторую прикладную функцию. Свойства транзакции (ACID): 1.Атомарность (Atomicity) – транзакция должна быть выполнена в целом или не выполнена вовсе. 2.Согласованность (Consistency) – транзакция не разрушает взаимной согласованности данных. 3.Изолированность (Isolation) конкурирующие за доступ к данным транзакции физически обрабатываются последовательно, изолированно друг от друга. 4.Долговечность (Durability) при успешном завершении транзакции произведенные ею изменения в данных не могут быть потеряны. Структура транзакции: Начало транзакции -> Действие 1 ->... Действие N -> Конец транзакции Фиксация транзакции – это действие, обеспечивающее запись на диск изменений в базе данных, которые были сделаны в процессе выполнения транзакции. Откат транзакции – это действие, обеспечивающее аннулирование всех изменений данных. Откат и фиксация транзакций становятся возможными благодаря журналу транзакций. Механизм обработки транзакций. Правила обработки транзакций: 1) В процессе выполнения транзакции пользователь "видит" только согласованные состояния базы данных. Пользователь никогда не может получить доступ к незафиксированным изменениям в данных, достигнутым в результате действий другого пользователя; 2) Если две транзакции, A и B, выполняются параллельно, то СУБД полагает, что результат будет такой же, как если бы: 1.транзакция A выполнялась бы первой, за ней была бы выполнена транзакция B; 2. транзакция B выполнялась бы первой, за ней была бы выполнена транзакция A. Механизм блокировок. Уровни блокировки: база данных целиком; отдельные таблицы базы данных; отдельные строки; отдельные поля. Типы блокировки: полная блокировка (отказ в доступе); частичная блокировка (доступ только для чтения) Протокол двухфазной фиксации транзакций. Двухфазовая фиксация (2PC - 2 Phase Commit) - каждый участвующий в ней узел, прежде чем зафиксировать транзакцию, подтверждает, что он готов сделать это. Если все узлы согласны зафиксировать транзакцию, то все относящиеся к ней действия реально выполняются; если один из узлов отказывается зафиксировать свою часть транзакции, то и все остальные узлы вынуждены прервать данную транзакцию. 2PC опирается на следующие фундаментальные правила: 1.Если хотя бы один узел отказывается зафиксировать транзакцию (голосует за ее прерывание), то распределенная транзакция прерывается на всех участвующих в ней узлах. 2.Если все узлы голосуют за фиксацию транзакции, то она фиксируется на всех участвующих в ней узлах. Фаза 1 – подготовка к фиксации глобальной транзакции. Сервер БД направляет команду «зафиксировать» транзакцию всем локальным узлам. В случае неполучения отклика хотя бы от одного узла все локальные транзакции откатываются. Фаза 2 – фиксация глобальной транзакции. Происходит фиксация всех локальных транзакций. В случае сбоя в течение данной фазы сервер БД гарантирует фиксацию глобальной транзакции вплоть до восстановления соединения.
|