Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 37
Текст из файла (страница 37)
Другим вариантом организации может быть запуск и работа менеджеров очередей и приложений наразных машинах. В этом случае приложениям предоставляется такой же интерфейс, как и при размещении менеджеров очередей на одной с ними машине.Однако сам интерфейс реализуется в виде заместителя, который связан с менеджером очередей традиционной синхронной связью на базе RPC. Таким образом,система MQSeries в своей основе сохраняет модель, согласно которой доступимеется только к локальным по отношению к приложениям очередям сообщений.КаналыКаналы сообщений представляют собой важный компонент системы MQSeries.Каждый канал сообщений имеет только одну связанную с ним очередь отправки.Из этой очереди выбираются сообщения, которые следует переслать на другойконец канала.
Передача по каналу может происходить только в том случае, еслиактивны как отправляющий, так и принимающий агенты МСА.Существует несколько способов инициировать канал, альтернативных запуску обоих агентов МСА вручную, и некоторые из них мы сейчас рассмотрим.Одной из альтернатив является прямой запуск приложением своего концаканала путем активизации принимающего или передающего агента МСА. Однако с точки зрения прозрачности это не слишком привлекательная альтернатива.2.4. Связь посредством сообщений145Более интересным подходом к запуску передающего агента МСА является конфигурирование очереди отправки канала на изменение состояния триггера припомещении в очередь первого сообщения. Этот триггер связывается с обработчиком запуска передающего агента МСА, который извлекает сообщения из очередиотправки.Другой альтернативой является запуск МСА по сети.
Так, если одна сторонаканала уже активна, она может послать управляющее сообщение, требующее запуска другого агента МСА. Это управляющее сообщение посылается демону,просматривающему общедоступный адрес той машины, на которой мы хотим запустить второй агент МСА.Каналы прекращают свое существование автоматически после того, как в течение определенного времени в очередь отправки не поступит ни одного сообщения.Каждый из агентов МСА имеет связанный с ним набор атрибутов, которыеопределяют общие свойства канала. Некоторые из этих атрибутов перечисленыв табл. 2.4. Значения атрибутов принимающего и передающего агентов МСАдолжны быть совместимыми.
Обычно агенты МСА договариваются об их значениях перед запуском канала. Так, например, оба агента МСА должны, очевидно,поддерживать один и тот же транспортный протокол. Примером необсуждаемого атрибута может быть очередность передачи сообщений — та же, в которой сообщения поступают в очередь отправки, или иная. Если один из агентов МСАзапрашивает отсылку по алгоритму FIFO, другой обязан выполнить это требование. Примером обсуждаемого атрибута может быть максимальная длина сообщения, величина которой просто выбирается по минимальному значению этого атрибута для обоих агентов МСА.Т а б л и ц а 2 .
4 . Некоторые атрибуты агента канала с о о б щ е н и йАтрибутОписаниеТип транспортаИспользуемый транспортный протоколДоставка FIFOОпределяет, что доставка сообщений осуществляетсяв том же порядке, что и посылкаДлина сообщенияМаксимальная длина одного сообщенияУстановка числаповторенийПопытки доставкиМаксимальное число повторений при запуске удаленногоагента МСАМаксимальное число попыток МСА поместить полученноесообщение в очередьПередача сообщенияДля передачи сообщения одним менеджером очередей другому (возможно, удаленному) необходимо, чтобы каждое сообщение несло в себе адрес назначения.Для этого используется заголовок сообщения.
Адрес в MQSeries образован издвух частей. Первая часть состоит из имени менеджера очередей, которому этосообщение должно быть доставлено, а вторая часть — это имя очереди назначения, сообщающее этому менеджеру, к какой очереди добавлять сообщение.146Глава 2. СвязьКроме адреса получателя необходимо также определить маршрут, которымдолжно следовать сообщение.
Описание маршрута производится путем заданияимени локальных очередей отправки, в которые должно добавляться сообщение.Нет необходимости задавать в сообщении полное описание маршрута. Напомним, что каждый канал сообщений имеет всего одну очередь отправки. Указав,в какую очередь отправки должно быть добавлено сообщение, мы однозначноопределим, какому соседнему менеджеру очередей будет передано это сообщение.В большинстве случаев маршруты явно сохраняются в таблицах маршрутизации внутри менеджеров очередей. Запись в таблице маршрутизации представляет собой пару (destQM, sendQ), где destQM — имя менеджера очередей, получающего сообщение, а sendQ — имя локальной очереди отправки, к которой следуетдобавлять сообщения для этого менеджера.
Запись в таблице маршрутизациив MQSeries называется псевдонимом (alias).Возможно, сообщению до прихода к адресату придется миновать несколькоменеджеров очередей. Всякий раз, когда подобный промежуточный менеджерочередей получает сообщение, он просто извлекает из заголовка сообщения имяменеджера очередей, которому адресовано сообщение, и просматривает таблицумаршрутизации, отыскивая локальную очередь отправки, в которую следует добавить это сообщение.Важно понять, что каждый менеджер очередей имеет уникальное в пределахсистемы имя, которое можно успешно использовать для идентификации этогоменеджера очередей.
Проблемы могут появиться в случае смены менеджера очередей или изменения его имени, это повлияет на все приложения, посылающиеему сообщения. Эту потенциальную проблему можно ослабить путем использования в качестве имен менеджеров очередей локальных псевдонимов (local alias).Псевдоним, определенный в менеджере очередей МУ, — это другое имя менеджера очередей М2, доступное только для приложений, работающих с М1.
Псевдоним позволяет использовать для очереди другое имя (логическое) даже при сменеменеджера очередей, отвечающего за данную очередь. Изменение имени менеджера очередей означает смену его псевдонима во всех менеджерах очередей. Приэтом на приложениях это никак не отразится.Принцип использования таблиц маршрутизации и псевдонимов иллюстрируетрис. 2.28.
Так, например, приложение, соединенное с менеджером очередей QMA,может ссылаться на удаленный менеджер очередей, используя его локальныйпсевдоним LA 1. Менеджер очередей первым делом ищет в таблице псевдонимовистинное место назначения, каковым оказывается менеджер очередей QMC.Маршрут на QMC ищется в таблице маршрутизации, согласно которой сообщения для QMC должны добавляться к очереди отправки SQ1, которая используется для пересылки сообщений менеджеру очередей QMB. Последний с помощьюсвоей таблицы маршрутизации пересылает сообщение менеджеру QMC.Руководствуясь таким подходом к маршрутизации и присвоению псевдонимов, мы приходим к относительно простому прикладному программному интерфейсу, который называется интерфейсом очередей сообщений (Message QueueInterface, MQI).
Наиболее важные примитивы MQI собраны в табл. 2.5.2.4. Связь посредством сообщенийТаблицаТаблицапсевдонимов маршрутизацииLA1 QMCQMB SQ1LA2 IQMDQMC SQ1QMD SQ2QMA147ТаблицаТаблицапсевдонимов маршрутизацииQMA SQ1LA1 QMAQMC SQ1LA2 IQMDQMD SQ11=1SQ1Таблицамаршрутизации SQ1QMA SQ1QMC SQ2SQ2QMB SQ1ТаблицапсевдонимовLA1 QMALA2 QMCQMDQMBТаблицамаршрутизацииQMA SQ1QMB SQ1QMD SQ1SQ1Рис. 2.28. Обобщенная организация сети очередей MQSeries с использованиемтаблиц маршрутизации и псевдонимовТаблица 2 . 5 . Примитивы MQI для с и с т е м ы IBM MQSeriesПримитивОписаниеMQopenОткрыть очередь (возможно, удаленную)MQcloseЗакрыть очередьMQputПоместить сообщение в открытую очередьMQgetПолучить сообщение из локальной очередиДля помещения сообщения в очередь приложение вызывает примитив MQopen,определяющий очередь, для которой предназначено сообщение под управлениемнекоего менеджера очередей. Менеджер очередей может быть указан с использованием локально доступного псевдонима.
Независимо от того, является или неточередь получения реально удаленной, она абсолютно прозрачна для приложений. Если приложение захочет получать сообщения из своей локальной очереди,можно вызвать примитив MQopen.Для чтения входящих сообщений можно открыть только локальную очередь.Когда приложение заканчивает свою работу с очередью, оно может закрыть еевызовом примитива MQclose.Сообщения могут быть записаны в очередь или считаны из нее путем использования соответственно примитивов MQput и MQget.
В принципе сообщения извлекают из очереди на основании их приоритета. Сообщения с одинаковым приоритетом извлекаются из очереди по принципу первым пришел — первым ушел(FIFO), то есть дольше всех находящиеся в очереди сообщения извлекаютсяпервыми. Кроме того, можно запросить конкретное сообщение. И наконец,MQSeries предоставляет средства для уведомления приложений о приходе сообщений. Это позволяет приложениям не опрашивать постоянно очередь на предмет прихода новых сообщений.148Глава 2. Связь2.5.
Связь на основе потоков данныхМодели взаимодействия, обсуждавшиеся выше, касались обмена более или менеенезависимыми, законченными порциями информации. Примерами таковых являются запросы и обращения к процедурам, ответы на подобные запросы и обменсообщениями между приложениями в системах очередей сообщений. Характерной чертой подобного взаимодействия является его индифферентность к тому,в какой конкретно момент времени оно происходит.
Несмотря на то, работаетсистема очень быстро или очень медленно, это никак не сказывается на корректности ее работы.Однако существуют формы взаимодействия, в которых временные характеристики имеют решающее значение. Рассмотрим, например, поток аудиоданных,состоящий из последовательности 16-битных выборок, каждая из которых представляет собой амплитуду звуковой волны в импульсно-кодовой модуляцир!.Предположим также, что поток аудиоданных имеет качество компакт-дисков,а это значит, что исходный звук был оцифрован с частоторт 44 100 Гц. Для воспроизведения звука необходимо, чтобы выборки аудиопотока проигрывалисьв том же порядке, в котором они представлены в потоке данных, и с интерваламировно по 1/44100 с. Воспроизведение с другой скоростью создаст неверное представление об исходном звуке.В этом разделе мы рассмотрим вопрос о том, какие средства могут предложить нам распределенные системы для работы с информацией, критичной к временным характеристикам передачи, такой как видео- и аудиопотоки.
Различныесетевые протоколы для взаимодействия на базе потоков данных рассматриваются в [192]. В [434] имеется исчерпывающее введение в вопросы мультимедиа, частью которых является взаимодействую на базе потоков данных.2 . 5 . 1 . Поддержка непрерывных средПоддержка обмена критичной к временным характеристикам передачи информации часто сводится к поддержке непрерывных сред. Под средой понимается то,что несет информацию.