Главная страница

Архитектура распределенных систем программного обеспечения. Учебное пособие издано при поддержке образовательной программы Формирование


Скачать 1 Mb.
НазваниеУчебное пособие издано при поддержке образовательной программы Формирование
АнкорАрхитектура распределенных систем программного обеспечения
Дата13.01.2023
Размер1 Mb.
Формат файлаdocx
Имя файлаmdwrbook.docx
ТипУчебное пособие
#885216
страница14 из 36
1   ...   10   11   12   13   14   15   16   17   ...   36

Модель очередей сообщений


При описании модели часто используются термины "клиент" и "сервер", но при обмене сообщениями это различие исчезает, по крайней мере, с точки зрения системной платформы. Разница между "клиентом" и "сервером" ("поставщиком службы") имеет чисто прикладной характер, и может ощущаться только теми, кто знаком с семантикой сообщений и процесса обмена ими. Это контрастирует с формами взаимодействия, описанными ранее, где объекты, действовавшие как клиенты, обращались к методам, предоставляемым другими объектами, действовавшими как серверы.

Модель очередей сообщений формирует основу, на которой разрабатываются многие полезные концепции и свойства, существенно упрощая разработку приложений, способных взаимодействовать друг с другом, и предоставляя поддержку для управления ошибочными ситуациями и системными сбоями. Среди таких концепций одна из наиболее важных абстракций является абстракция "очередь сообщений".

Основная идея, лежащая в основе систем очередей сообщений, состоит в том, что приложения общаются друг с другом путем помещения сообщений в специальные очереди. Очереди обычно идентифицируются по именам, обычно они связаны с определенным получателем. Эти сообщения передаются по цепочке коммуникационных серверов и, в конце концов, достигают места назначения, даже в том случае, если получатель в момент отправки был неактивен. Как только получатель освободится для обработки нового сообщения, он обратится к нужной функции системы MOM и извлечет из очереди первое сообщение (Рис. 2.16). Очередь может быть прочитана только связанным с ней приложением, при этом несколько приложений могут совместно использовать одну очередь.

Важный момент в системах очередей сообщений состоит в том, что отправитель обычно в состоянии гарантировать только попадание сообщения в очередь получателя, не гарантируя времени попадания. Какие-либо гарантии, что сообщение будет прочитано и обработано получателем также не даются, это зависит только от самого получателя.

После того, как сообщение попало в очередь, оно будет оставаться в ней до удаления, независимо от того, активен его отправитель или его получатель.





Рис.2.16.Модельсистемыочередей сообщений.

Сообщения должны быть правильно адресованы и могут содержать любые данные. Обычно адресация осуществляется путем указания уникального системного имени очереди, в которую направляется сообщение. В некоторых случаях размер сообщения может быть ограничен, но базовая система в состоянии разбивать большие сообщения на части и собирать их обратно в единое целое абсолютно прозрачно для приложений.

Большинство систем очередей сообщений поддерживают процесс вставки дескриптора функции обратного вызова, которая автоматически вызывается при попадании сообщения в очередь. Обратные вызовы (сервер вызывает клиента) используются для автоматического запуска процесса, который будет забирать сообщения из очереди, если ни один такой процесс не был запущен заранее.

Слабая связанность отправителя и получателя сообщений имеет много преимуществ. Получатели имеют полную свободу выбора момента обработки сообщений. Извлечение сообщений из очереди может производиться только тогда, когда получатель может или должен их обработать. Важным следствием из этого является то, что системы очередей устойчивы к системным сбоям, поскольку от них не требуется поддерживать работоспособность в момент отправки сообщения. Если приложение выключено или не имеет возможности получать сообщения, они будут просто накапливаться в очереди сообщений, а после включения приложения в работу будут доставлены по назначению.

Помещенные в очередь сообщения могут иметь связанные с ними даты или временные интервалы действия. Если сообщение не извлекается из очереди до указанного времени, оно уничтожается. Очереди могут быть разделяемыми среди нескольких приложений. Этот подход часто используется, когда нужно иметь несколько приложений, обращающихся за одной и той же услугой, что позволяет распределить между ними нагрузку и повысить производительность. Система контролирует доступ к очереди и дает гарантию, что сообщение попадет только одному приложению.
      1. 1   ...   10   11   12   13   14   15   16   17   ...   36


написать администратору сайта