Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 36
Текст из файла (страница 36)
Интеграция требует, чтобы приложенияпонимали сообщения, которые они получают. На практике это означает, что от-2.4. Связь посредством с о о б щ е н и й141правляемые сообщения должны иметь тот формат, которого ожидает получатель.Проблема подобного подхода в том, что каждый раз, когда в систему добавляется новое приложение, оно привносит в нее свой специфический формат сообщений и каждый потенциальный получатель должен научиться понимать этотформат, на случай, если он получит сообщение от этого нового приложения.Альтернатива состоит в том, чтобы принять единый формат сообщений, какэто было сделано с традиционными сетевыми протоколами. К сожалению, этотподход для систем очередей сообщений в общем случае неприменим.
Проблемасостоит в уровне абстракций, которыми оперируют эти системы. Единый формат сообщений имеет смысл, только если набор процессов, использующих этотформат, в реальности достаточно однотипен. Если набор приложений, составляющих распределенную информационную систему, в значительной степени разнороден (а так обычно и бывает), то самым лучшим единым форматом будетпростая последовательность байтов.Несмотря на то что для отдельных прикладных областей можно определитьсвои единые форматы сообщений, общий подход состоит в том, чтобы научитьсясуществовать в мргре разнообразных форматов, стараясь предоставить средствадля максимально простого преобразования сообщений из одного формата в другой. В системах очередей сообщений преобразование производится на специальных узлах сети массового обслуживания, известных под названием брокеров сообщений (message brokers).
Брокер сообщений работает как шлюз прикладногоуровня в системе очередей сообщений. Его основная задача — преобразованиевходящих сообщений в формат, который понимается целевым приложением. Заметим, что для системы очередей сообщений брокер сообщенрш — это простоеще одно приложение, как показано на рис. 2.26. Другими словами, брокер сообщений обычно не считается неотъемлемой частью системы сообщений.База данных с правиламиКлиент-отправитель Брокер сообщенийпреобразованияКлиент-получатель-лг—^\—ПрограммаброкерLП' 'нОСкЙ Й1 1т1 I IАк)Й11"' кKrJixuVv.lv:;^^^^^^^— —1^^Щ |-f| УровеньЫ ыочередей!ОС1—iос|^СетьРис, 2.26. Обобщенная организация брокера сообщений в системе очередей сообщенийБрокер сообщений может просто переформатировать сообщения.
Предположим, например, что входящее сообщение содержит таблицу базы данных, записи142Глава 2. Связьв которой разделены специальным разделителем, а поля в записи имеют известную фиксированную длину. Если целевое приложенное рассчитано на другой разделитель записей и переменную длину полей, то для преобразования сообщенийв формат, используемый приложением-получателем, можно использовать брокер сообщений.В более совершенном варианте брокер сообщений может выполнять обязанности шлюза прикладного уровня, осуществляя, например, преобразование почтовых сообщений между сетью Х.400 и Интернетом.
В этих случаях часто невозможно гарантировать, что вся информация, содержащаяся в пришедшем сообщении,действительно будет преобразована в соответствующие части исходящего сообщения. Другими словами, возможно, нам пррщется смириться с частичной потерей информации в ходе преобразования [9, 204].Сердцем брокера сообщений является база данных с правилами, определяющими, каким именно образом сообщение в формате X конвертируется в сообщение в формате У. Проблема состоит в определении правил. Большинство брокеров сообщений поставляются в комплекте со сложными утилитами определенияправил, но в их основе по-прежнему лежит ручной ввод правил в базу данных.Правила могут формулироваться на специальном языке преобразований, но в большинстве брокеров сообщений возможно также программное преобразование с использованием стандартных языков программирования.
Установка брокера сообщений — это обычно весьма непростая задача.Замечание по системам очередей сообщенийОбдумывая то, что мы говорили по поводу систем очередей сообщений, мы приходим к выводу, что они давно уже существуют в виде служб электронной почты.Системы электронной почты обычно реализуются посредством набора почтовыхсерверов, которые хранят и пересылают почту для пользователей, причем хостыпользователей соединены с сервером напрямую. Маршрутизация обычно отсутствует, поскольку системы электронной почты могут непосредственно использовать базовые транспортные службы. Так, например, в почтовом протоколе SMTP,используемом в Интернете [360], сообщения пересылаются путем установленияпрямого ТСР-соединения с принимающим почтовым сервером.Системы электронной почты особенно похожи на системы очередей сообщений своей направленностью на предоставление непосредственной поддержки конечным пользователям. Это объясняет, например, почему множество приложений для поддержки групповой работы основаны непосредственно на системахэлектронной почты [234].
Кроме того, системы электронной почты могут иметьочень специфические свойства, например способность автоматической фильтрации сообщений, поддержку специальной базы данных сообщений (например,для быстрого поиска сохраненных сообщений) и т. д.Вообще же системы очередей сообщений предназначены не только для поддержки конечных пользователей. Важной областью их применения являетсяорганизация сохранного взаимодействия между процессами, безразлично, запускают эти процессы пользовательские приложения, обслуживают доступ к базеданных, осуществляют вычисления или делают что-то еще. Такой подход приво-2.4. Связь посредством сообщений143дит к различиям в.
требованиях к системам очередей сообщений и «чистым» системам электронной почты. Так, например, системы электронной почты обычноне обеспечивают гарантированной доставки сообщений, приоритетов сообщений, средств протоколирования, эффективных групповых рассылок, выравнивания загрузки, защиты от сбоев и пр.Поэтому системы очередей сообщений общего назначения включают широкий спектр приложений, в том числе приложений электронной почты, рабочихпотоков, средств групповой работы и пакетной обработки. Однако может бытьнаиболее важная область применения — это интеграция наборов баз данных илиприложений баз данных (возможно, сильно распределенных) в информационную систему с множеством баз данных.
По этой теме можно порекомендоватьработы [337, 416]. Так, запрос, затрагивающий несколько баз данных, может нуждаться в разбиении на более мелкие запросы, перенаправляемые к отдельнымбазам. Системы очередей сообщений помогают предоставлять основные возможности упаковки каждого из подзапросов в сообщение и их направления к соответствующим базам данных.
Другие средства связи, обсуждаемые в этой главе,подходят для этого значительно хуже.2.4.4. Пример — IBM MQSehesЧтобы нам было легче понять, как реально работают системы очередей сообщений, рассмотрим конкретную систему, а именно MQSeries компании IBM [169].Эта система приобрела популярность в относительно традиционной для IBM области мэйнфреймов, которые используются для организации доступа и обработки больших баз данных. Важнейшая область применения MQSeries — обработкафинансовых данных.ОбзорБазовая архитектура сети массового обслуживания MQSeries весьма проста(рис. 2.27).
Все очереди управляются менеджерами очередей {queue managers).Менеджер очередей отвечает за извлечение сообщений из выходных очередей ипересылку их другим менеджерам очередей. Кроме того, менеджер очередей отвечает за обработку входящих сообщений, извлекаемых им из базовой сети и сохраняемых в соответствующих входных очередях.Менеджеры очередей попарно соединены каналами сообщений (message channeb), которые представляют собой абстракцию соединений транспортного уровня.Канал сообщений — это ненаправленное надежное соединение между отправляющим и принимающим менеджерами очередей, по которому передаются находящиеся в очереди сообщения. Канал сообщений на базе Интернета, например,реализуется в виде соединения TCP. Каждый из двух концов канала сообщенийуправляется агентом канала сообщений (Message Channel Agent, MCA). Отправляющий агент MCA обычно только проверяет исходящие очереди на наличиев них сообщений, упаковывает их в пакеты транспортного уровня и пересылаетпо соединению, соответствующему принимающему агенту МСА.
Основная зада-144Глава 2. Связьча принимающего агента МСА — отслеживать приход пакетов, извлекать из нихсодержимое и сохранять извлеченные сообщения в соответствующих очередях.Клиент-отправительТаблицамаршрутизацииОчередьотправкиКлиентская очередьполученияКлиент-получатель—^—ПрограммаПрограммаИнтерфейсочередисообщений1i'-!-!y''^>i:i;i'^:'ij1ЗаглушкаАВызовы RPC(синхронные)Передача сообщений(асинхронная)1К другим удаленнымменеджерам сообщенийРис. 2 .
2 7 . Обобщенная организация системы очередей сообщений IBM MQSeriesМенеджеры очередей могут быть скомпонованы с каким-либо процессом в единое приложение, управляющее очередями. В этом случае очереди скрываются отприложений за стандартным интерфейсом, но непосредственная работа приложения с очередями может оказаться более эффективной.