Россия |
Система интеграции приложений IBM WebSphere MQ
Основные принципы работы WebSphere MQ
Основные определения и концепции
Введем ряд базовых понятий, которые будут использоваться далее.
Сообщение в терминах WebSphere MQ - последовательность данных, значимых для приложений и/или пользователя. Сообщение MQ, как правило, состоит из двух частей - служебной и содержательной. В служебной части находится информация, которая представляет интерес в процессе пересылки - тип сообщения, путь его следования, время создания и пр. Служебная часть сообщения создается как приложениями, так и серверами, которые осуществляют его пересылку к месту назначения.
Содержательная часть сообщения представляет собой данные, которые посылают/принимают непосредственно приложения. Для обеспечения надежности в процессе передачи сообщения содержательная часть делится на сегменты, которые при необходимости могут передаваться как логически независимые единицы.
Хранение сообщений в процессе пересылки происходит в специальных очередях сообщений. Очередь сообщений представляет собой буфер, куда сообщения помещаются, либо извлекаются. Не останавливаясь детально на вопросах реализации очередей сообщений, скажем лишь, что сообщение может быть помечено как <устойчивое> - в этом случае оно сохраняется в очереди даже в ситуации непредвиденного отключения сервера, на котором физически реализована очередь. Безусловно, определение сообщения как устойчивого ведет к некоторому снижению производительности вследствие необходимости постоянного хранения актуальной копии сообщения на диске, но зато позволяет обеспечить гарантированность доставки информации в случае отключения серверов. Администратор задает тип сообщений по умолчанию (устойчивое/неустойчивое) для очереди, тем не менее, в очереди могут одновременно находиться сообщения обоих типов.
Управление очередями сообщений (создание, удаление, помещение/извлечение сообщений) осуществляется менеджерами очередей сообщений (иногда применяется название <сервер очередей сообщений>). Фактически менеджер очередей сообщений является системным программным средством, которое предоставляет пользовательским приложениям возможность осуществлять взаимодействие с очередями сообщений и непосредственно сообщениями. Вследствие этого, для обеспечения работоспособности системы на базе MQ, должен быть определен как минимум один менеджер очередей сообщений. При этом один менеджер очередей сообщений может управлять несколькими очередями. Схема, отображающая связь между сообщениями, очередями сообщений, менеджерами очередей и приложениями, показана на рис. 6.18. Менеджер очередей сообщений должен иметь уникальное имя для идентификации в процессе передачи сообщений.
Как происходит передача сообщений между приложениями
Передача информации между различными очередями сообщений происходит с использованием специальных каналов передачи сообщений. Каналы являются односторонними, для полноценного обмена информацией должны быть определены два канала передачи информации.
Сообщения передаются по каналам с использованием специализированного протокола передачи МСP (Message Channel Protocol). Непосредственно взаимодействие с каналом осуществляется с помощью программного продукта MCA (Message Channel Agent), реализующего все низкоуровневые функции взаимодействия. В процессе передачи менеджер очереди сообщений помещает сообщение в канал исходящих сообщений, осуществляется процесс передачи, после чего сообщение записывается во входящую очередь приложения-адресата. В ходе передачи сообщения менеджер очереди по информации, находящейся в служебной части сообщения, определяет направление передачи, и, используя специальные протоколы и таблицы маршрутизации, пересылает сообщение в соответствующую очередь. Схематически процесс передачи сообщений показан на рис. 6.19.
Так как MOM предоставляет сервис асинхронного взаимодействия, приложение-приемник не обладает информацией о факте появления сообщения, адресованного ему. Для этих целей предназначены специальные триггеры (triggers), которые контролируют появление сообщений в очереди и инициируют процесс получения сообщения приложением-приемником. При этом условием срабатывания триггера может быть не просто появление сообщения в очереди, но и соответствие сообщения заданному приоритету, поступление нескольких сообщений и пр.
Передача информации в WebSphere MQ - независимость от структуры сети и удобство для разработчиков приложений
Безусловно, описанный выше процесс передачи в реальности выглядит несколько сложнее. В частности, выделяются так называемые локальные очереди (local queues) и очереди передачи (transmission queues). Локальные очереди предназначены для приложений, которые относятся к локальному менеджеру очередей сообщений. При передаче информации приложениям, которые относятся к удаленному менеджеру очередей сообщений, сообщение помещается в очередь передачи (см. рис. 6.19).
Как и любое сообщение WebSphere MQ, сообщение, находящееся в очереди передачи, имеет служебную часть, идентифицирующую, в частности, очередь приложения-получателя. Эта часть содержит наименование очереди приложения-получателя и имя удаленного менеджера очередей сообщений, которому принадлежит очередь. Проверка адреса получателя осуществляется следующим образом:
- Если имя менеджера-приемника информации совпадает с локальным, то сообщение помещается в соответствующую очередь сообщений на локальном менеджере.
- Если имя менеджера-приемника информации не совпадает с локальным, то с помощью таблиц маршрутизации локальный менеджер очередей, используя протокол MCP, осуществляет пересылку информации удаленному менеджеру очередей.
- Удаленный менеджер очередей помещает сообщение в очередь приложения-приемника.
Использование таблиц маршрутизации позволяет приложениям не заниматься процессами пересылки информации, это обязанность менеджеров очередей. Вместо реальных имен менеджеров очередей и имен очередей в таблице маршрутизации для адресации сообщений могут использоваться альтернативные логические имена. Правильная доставка сообщений при этом обеспечивается средствами, называемыми <определение удаленных очередей> и <псевдонимы>. Использование этих средств позволяет разработчикам приложений не уделять внимания структуре сети менеджеров очередей сообщений, оставляя эти задачи для решения системным администраторам.
Таким образом, система менеджеров сообщений WebSphere MQ является полностью самодостаточной и не требует от приложений знать что-либо о ее внутренней организации.
Проектировщиков систем на базе MQ привлекают еще два важных свойства: гарантированность доставки информации и многоплатформенность.
Гарантированность доставки
Гарантированность доставки информации обеспечивается использованием протокола MCP и средствами восстановления серверов.
Применяемый для передачи информации между удаленными очередями сообщений, протокол MCP фиксирует факт передачи только в том случае, когда процесс доставки завершился успешно. Если во время пересылки информации сообщение либо его части были по каким-либо причинам потеряны, то на протокольном уровне осуществляется повторная посылка информации. Для повышения гибкости система MQ позволяет разбивать сообщение на более мелкие сегменты. Сегменты могут передаваться независимо друг от друга, при этом при получении осуществляется сборка всех сегментов в единое сообщение. Сокращение размера сегмента особенно актуально при работе в условиях ненадежных соединений.
Таким образом, применение специализированного протокола и сегментация сообщений совместно с возможностью хранения информации в очереди на время неработоспособности сети делает MQ, как представителя MOM, незаменимым средством при проектировании информационных систем высокой надежности. Кроме того, MQ предоставляет специальные средства для работы при отказе серверного оборудования. При отказе одного из серверов, на котором развернут менеджер очередей MQ, система может воспользоваться обходным путем доставки информации через другие менеджеры очередей. Заметим, что реализация данной настройки не является слишком сложной для программистов и может быть скрыта от разработчиков внешних приложений. Кроме того, при восстановлении сервера все сообщения, находящиеся в очередях и определенные как <устойчивые> (см. выше), не теряются и продолжают свой путь до приложения-приемника.
Средства обеспечения гарантированности доставки информации позволяют использовать MQ в промышленных системах, где потеря информации может привести к нежелательным последствиям. В этом состоит принципиальное отличие MQ, как представителя класса MOM, от, например, систем электронной почты. Последние не предоставляют сервиса гарантированной доставки, в лучшем случае информируя отправителя о факте получения/неполучения информации.
При существенных проблемах, возникающих в сети (например, блокировка канала передачи информации в течение длительного времени, отказ сервера и пр.), т.е. в случае критической ситуации, связанной с невозможностью доставки информации, WebSphere MQ помещает сообщение в специальную очередь - Dead Letters Queue (DLQ). Заметим, что сообщение при этом не удаляется (если оно было определено как устойчивое), а лишь перемещается в другое место для временного хранения. Отслеживая с помощью специальных средств содержимое очереди сообщений DLQ, приложение или оператор системы имеет возможность предпринять те или иные действия для исправления ситуации. В очередь DLQ также попадают и сообщения с истекшим сроком действия.