WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Издатель-подписчик (англ. publisher-subscriber или англ. pub/sub) — поведенческий шаблон проектирования передачи сообщений, в котором отправители сообщений, именуемые издателями (англ. publishers), напрямую не привязаны программным кодом отправки сообщений к подписчикам (англ. subscribers). Вместо этого сообщения делятся на классы и не содержат сведений о своих подписчиках, если таковые есть. Аналогичным образом подписчики имеют дело с одним или несколькими классами сообщений, абстрагируясь от конкретных издателей.

Шаблон издатель-подписчик представляет собой расширение шаблона наблюдатель, в который добавлено описание канала событий (англ. event channel), специально предназначенного для оповещения о событиях[1].

Шаблон издатель-подписчик наряду с близкой ему концепцией очереди сообщений содержится в арсенале средств событийно-ориентированного промежуточного слоя ПО большой системы. Большинство систем передачи сообщений поддерживают в своем API как и модель издатель-подписчик, так и очередь сообщений. Примером такой системы может быть Java Message Service (JMS)[1].

Этот шаблон обеспечивает большую масштабируемость и более динамичную топологию сети.

Фильтрация сообщений

В модели издатель-подписчик подписчики обычно получают только подмножество всех опубликованных сообщений. Процесс отбора сообщений для получения и их обработка называется фильтрацией. Существуют две основных формы фильтрации: основанная на теме (англ. topic) и основанная на содержимом.

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

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

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

Топология

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

Подписчики могут подписываться на определенные сообщения на этапе написания кода, во время инициализации приложения или во время выполнения. В системах с пользовательским графическим интерфейсом подписчики могут подписываться вручную с помощью команд (таких как нажатие на кнопке). Некоторые фреймворки и ПО используют для подписки конфигурационные файлы в формате XML или JSON, такие файлы читаются во время инициализации. Другие программные системы могут добавлять или удалять подписку во время выполнения, например триггеры баз данных или RSS.

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

История

Шаблон издатель-подписчик впервые публично был представлен в 1987 году Ассоциацией по вычислительной технике (ACM) на симпозиуме «Принципы операционных систем» конференции SOSP '87, в статье «Применение виртуальной синхронности в распределенных системах. 123—138»[2] как часть новостной подсистемы Isis Toolkit.

См. также

Примечания

  1. 1 2 Hohpe, G. and Woolf, B. Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions. — Pearson Education, 2012. — P. 106. ISBN 9780133065107.
  2. Birman, K. and Joseph, T. «Exploiting virtual synchrony in distributed systems» in Proceedings of the eleventh ACM Symposium on Operating systems principles (SOSP '87), 1987. pp. 123—138.

Литература

  • Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., & Stal, M. (1996). Pattern Oriented Software Architecture, Volume 1: A System of Patterns. John Wiley & Sons, 1996, pp. 339—343

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии