- •7.5.2. Трехфазное подтверждение
- •7.6. Восстановление
- •7.6.1. Основные понятия
- •7.6.2. Создание контрольных точек
- •7.6.3. Протоколирование сообщений
- •7.7. Итоги
- •Глава 8
- •8.1. Общие вопросы защиты
- •8.1.1. Угрозы, правила и механизмы
- •8.1.2. Вопросы разработки
- •8.1.3. Криптография
- •8.2. Защищенные каналы
- •8.2.1. Аутентификация
- •8.2.2. Целостность и конфиденциальность сообщений
- •8.2.3. Защищенное групповое взаимодействие
- •8.3. Контроль доступа
- •8.3.1. Общие вопросы контроля доступа
- •8.3.2. Брандмауэры
- •8.3.3. Защита мобильного кода
- •8.4. Управление защитой
- •8.4.1. Управление ключами
- •8.4.2. Управление защищенными группами
- •8.4.3. Управление авторизацией
- •8.5. Пример — Kerberos
- •8.6. Пример — sesame
- •8.6.1. Компоненты системы sesame
- •8.6.2. Сертификаты атрибутов привилегий
- •8.7. Пример — электронные платежные системы
- •8.7.1. Электронные платежные системы
- •8.7.2. Защита в электронных платежных системах
- •8.7.3. Примеры протоколов
- •8.8. Итоги
- •Глава 9
- •9.1. Corba
- •9.1.1. Обзор
- •9.1.2. Связь
- •9.1.3. Процессы
- •9.1.4. Именование
- •9.1.5. Синхронизация
- •9.1.6. Кэширование и репликация
- •9.1.7. Отказоустойчивость
- •9.1.8. Защита
- •9.2. Dcom
- •9.2.1. Обзор
- •9.2.2. Связь
- •9.2.3. Процессы
- •9.2.4. Именование
- •Синхронизация
- •Репликация
- •Отказоустойчивость
- •9.2.8. Защита
- •9.3. Globe
- •9.3.1. Обзор
- •9.3.2. Связь
- •9.3.3. Процессы
- •9.3.4. Именование
- •9.3.5. Синхронизация
- •9.3.6. Репликация
- •Отказоустойчивость
- •9.4. Сравнение систем corba, dcom и Globe
- •9.4.1. Философия
- •Процессы
- •9.4.4. Именование
- •Синхронизация
- •Кэширование и репликация
- •Отказоустойчивость
9.1.5. Синхронизация
Две наиболее важные службы, облегчающие синхронизацию в CORBA, — это служба параллельного доступа и служба транзакций. Эти две службы работают совместно, реализуя распределенные и вложенные транзакции путем двухфазной блокировки.
В основе транзакций в CORBA лежит следующая модель. Транзакция инициируется клиентом и содержит последовательность обращений к объектам. Когда соответствующий объект вызывается в первый раз, он автоматически становится частью транзакции. При этом сервер объекта уведомляется о том, что теперь он участвует в транзакции. Эта информация неявно передается серверу при обращении к объекту.
Частью транзакции могут стать объекты двух основных типов. Восстановимый объект (recoverable object) — это объект, выполняемый сервером объектов, который способен включиться в протокол двухфазного подтверждения. В частности, серверы восстановимых объектов в состоянии обработать прерывание транзакции с откатом всех изменений, внесенных в результате обращения к одному из восстановимых объектов. Однако в ходе транзакции может осуществляться и обращение к объектам, которые невозможно вернуть в состояние, предшествующее началу транзакции. Конкретно — это транзакционные объекты (transactional objects), выполняемые серверами, которые не могут включиться в протокол двухфазного подтверждения транзакций. Транзакционные объекты обычно предназначены только для чтения.
Таким образом, понятно, что транзакции в CORBA подобны распределенным транзакциям и их протоколам, которые мы обсуждали в главах 5 и 7.
Точно так же и службы блокировок, предоставляемые службой параллельного доступа, — это именно то, что мы ожидаем увидеть. На практике служба реализуется при помощи центрального менеджера блокировок, приемы распределенной блокировки не применяются. Служба отличает блокировки записи от блокировок чтения и способна поддерживать несколько степеней детализации блокировки, что часто бывает нужно при работе с базами данных. Так, например, она в состоянии отличать блокировку всей таблицы от блокировки одной записи. Информацию о степенях блокировки можно получить в [160, 177]
9.1.6. Кэширование и репликация
CORBA не поддерживает обобщенных кэширования и репликации. В третью версию CORBA, как мы увидим далее, включена только возможность репликации объектов в целях отказоустойчивости. Отсутствие поддержки обобщенной репликации означает, что в случае необходимости разработчики приложений в плане поддержания репликация могут прибегнуть к специальным мерам. В большинстве случаев эти меры основаны на использовании перехватчиков.
Давайте рассмотрим один из примеров того, как для повышения производительности в CORBA можно включить возможность репликации. Эта задача решается в системе CASCADE. В CASCADE цель состоит в предоставлении обобщенной масштабируемой схемы, позволяющей кэшировать любой объект CORBA [102]. CASCADE поддерживает службу кэширования, реализуемую с помощью по возможности большого набора серверов объектов, каждый из которых ссылается на так называемый доменный сервер кэширования (Domain Caching Server, DCS). Каждый сервер DCS — это сервер объектов, работающий в ORB системы CORBA. Коллекция серверов DCS может быть распределена по глобальной сети, такой как Интернет.
Кэшируемые копии одного и того же объекта образуют иерархию. Подразумевается, что одиночный клиент, например владелец объекта, может зарегистрировать свой объект на локальном сервере DCS. Этот DCS становится корнем иерархии. Другие клиенты также могут потребовать у своих локальных серверов DCS кэшировать копию этого объекта. Для этого DCS сначала присоединяется к текущей иерархии тех DCS, которые уже кэшируют этот объект.
CASCADE поддерживает клиентскую модель непротиворечивости данных, которую мы обсуждали в главе 6. Кроме того, он поддерживает тотальное упорядочивание, которое гарантирует, что все изменения повсюду будут производиться в одном и том же порядке. Каждый из объектов может иметь собственную модель непротиворечивости, но общесистемных правил поддержания кэшируемых объектов не существует. Как мы показали в главе 6, при репликации с целью повышения производительности важно, чтобы одновременно поддерживались разные модели непротиворечивости, поскольку применимость моделей в значительной степени зависит от шаблонов обращения и доступа к объекту. CASCADE удовлетворяет этим требованиям.
В качестве службы CORBA система CASCADE тесно связана с перехватчиками. Со стороны клиента система CASCADE фактически невидима, все вопросы, связанные с непротиворечивостью, скрыты за интерфейсами, которые предоставляют объекты. Единственный случай, когда клиент получает явный доступ к CASCADE, — обращение к своему локальному серверу DCS с запросом о начале кэширования конкретного объекта. Когда в дальнейшем к этому объекту происходят обращения, они перехватываются клиентским брокером ORB и пересылаются DCS.
В зависимости от модели непротиворечивости объекта, указанного в ссылке, к запросу перед его отправкой в DCS добавляется дополнительная информация. Так, например, если клиент нуждается в непротиворечивости чтения собственных записей, необходимо сообщить объекту, какую последнюю операцию записи видел клиент.
Обобщенную организацию DCS иллюстрирует рис. 9.12. DCS управляет несколькими копиями объекта. Копия объекта состоит из состояния и реализаций операций, производимых в этом состоянии. В терминологии CORBA, DCS имеет того же слугу, что и исходная копия объекта. Перехватчик, стоящий за DCS, перехватывает входящие обращения и выделяет из них определенную информацию, например, добавленную перехватчиком клиента. Запрос после этого пересылается управляющему модулю обращений к методу, который однозначно связан с объектом, указанным в ссылке. Как показано на рисунке, каждый кэши-рованный объект имеет собственный объект правил, который содержит специфическую информацию об управлении обращениями к методу. Дополнительная информация, извлеченная перехватчиками, передается в этот объект правил отдельно.
Хотя CASCADE и позволяет более или менее прозрачно кэшировать серверы объектов, однако похоже, что для реализации службы кэширования в CORBA необходимы дополнительные усилия. Хотя при необходимости изменять обращения для реализации подобной услуги можно с помощью перехватчиков, никакой другой поддержки кэширования CORBA не предоставляет.
