Jump to content

Шаблон публикации-подписки

(Перенаправлено с Публикация-подписка )

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

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

Публикация-подписка является разновидностью парадигмы очереди сообщений и обычно является частью более крупной системы промежуточного программного обеспечения, ориентированной на сообщения . модели публикации/подписки и очереди сообщений Большинство систем обмена сообщениями поддерживают в своем API ; например, Служба сообщений Java (JMS).

Этот шаблон обеспечивает большую масштабируемость сети и более динамичную топологию сети , что приводит к снижению гибкости при изменении издателя и структуры публикуемых данных. По словам Грегора Хохпе, по сравнению с шаблонами синхронного обмена сообщениями (такими как RPC ) и шаблонами обмена сообщениями «точка-точка» , публикация-подписка обеспечивает высочайший уровень разделения между архитектурными компонентами, однако она также может связывать их некоторыми другими способами (например, формат и семантическая связь), поэтому со временем они становятся беспорядочными. [ 1 ]

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

[ редактировать ]

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

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

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

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

Топологии

[ редактировать ]

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

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

посредника . Промежуточное программное обеспечение службы распределения данных (DDS) не использует Вместо этого каждый издатель и подписчик в системе публикации/подписки обмениваются метаданными друг о друге посредством многоадресной IP-рассылки . Издатель и подписчики кэшируют эту информацию локально и маршрутизируют сообщения на основе обнаружения друг друга в общей базе данных. По сути, безброкерские архитектуры требуют, чтобы система публикации/подписки построила оверлейную сеть, которая обеспечивает эффективную децентрализованную маршрутизацию от издателей к подписчикам. показал Джон Кляйнберг , что эффективная децентрализованная маршрутизация требует топологий Navigable Small-World . Такие топологии «Маленького мира» обычно реализуются децентрализованными или федеративными системами публикации/подписки. [ 2 ] Системы публикации/подписки с учетом местоположения [ 3 ] создавать топологии Small World, которые маршрутизируют подписки через короткие и недорогие каналы связи, тем самым сокращая время доставки подписок.

Одной из первых публично описанных систем pub/sub была «новостная» подсистема Isis Toolkit, описанная в 1987 году на симпозиуме Ассоциации вычислительной техники (ACM) по принципам операционных систем (SOSP '87) в статье «Эксплуатация виртуальных систем» . Синхронность в распределенных системах 123–138». [ 4 ]

Преимущества

[ редактировать ]

Ослабленная связь

[ редактировать ]

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

Масштабируемость

[ редактировать ]

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

С другой стороны, за пределами корпоративной среды парадигма публикации/подписки доказала свою масштабируемость до объемов, значительно превышающих объемы одного центра обработки данных, обеспечивая распределенный обмен сообщениями по всему Интернету через протоколы веб-синдикации, такие как RSS и Atom . Эти протоколы синдикации допускают более высокую задержку и отсутствие гарантий доставки в обмен на возможность даже низкопроизводительного веб-сервера синдицировать сообщения (потенциально) миллионам отдельных абонентских узлов.

Недостатки

[ редактировать ]

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

Проблемы с доставкой сообщений

[ редактировать ]

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

  • Брокер в системе публикации/подписки может быть спроектирован так, чтобы доставлять сообщения в течение определенного времени, но затем прекращать попытки доставки, независимо от того, получил ли он подтверждение успешного получения сообщения всеми подписчиками или нет. Система публикации/подписки, спроектированная таким образом, не может гарантировать доставку сообщений любым приложениям, которым может потребоваться такая гарантированная доставка. Для обеспечения такой гарантированной доставки необходимо обеспечить более тесную связь конструкций такой пары издателя и подписчика за пределами архитектуры публикации/подписки (например, требуя от подписчика публиковать сообщения о получении).
  • Издатель в системе публикации/подписки может предполагать, что подписчик слушает, хотя на самом деле это не так. Завод может использовать систему публикации/подписки, в которой оборудование может сообщать о проблемах или сбоях подписчику, который отображает и регистрирует эти проблемы. В случае сбоя (сбоя) регистратора издатели проблем с оборудованием не обязательно получат уведомление о сбое регистратора, а сообщения об ошибках не будут отображаться или записываться каким-либо оборудованием в системе публикации/подписки. Это также проблема проектирования альтернативных архитектур обмена сообщениями, таких как система клиент/сервер. В системе клиент/сервер при сбое регистратора ошибок система получит указание об отказе регистратора ошибок (сервера). Однако системе клиент/сервер придется иметь дело с этим сбоем, подключив резервные серверы журналирования или динамически создавая резервные серверы журналирования. Это усложняет конструкцию клиента и сервера, а также архитектуру клиент/сервер в целом. Однако в системе публикации/подписки в систему можно добавить резервных подписчиков регистрации, которые являются точными копиями существующего средства регистрации, чтобы повысить надежность регистрации без какого-либо воздействия на какое-либо другое оборудование в системе. В системе публикации/подписки функция гарантированной регистрации сообщений об ошибках может добавляться постепенно, после реализации базовой функциональности регистрации сообщений о проблемах оборудования.

Шаблон «публикация/подписка» хорошо масштабируется для небольших сетей с небольшим количеством узлов издателя и подписчика и небольшим объемом сообщений. Однако по мере роста количества узлов и сообщений увеличивается вероятность нестабильности, ограничивая максимальную масштабируемость сети публикации/подписки. Примеры нестабильности пропускной способности в больших масштабах включают в себя:

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

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

Даже в системах, которые не полагаются на брокеров, подписчик может иметь возможность получать данные, на получение которых у него нет разрешения. Неавторизованный издатель может иметь возможность внести неправильные или вредные сообщения в систему публикации/подписки. Это особенно верно для систем, которые широковещательно или многоадресно рассылают свои сообщения. Шифрование (например, безопасность транспортного уровня (SSL/TLS)) может предотвратить несанкционированный доступ, но не может предотвратить распространение вредоносных сообщений авторизованными издателями. Архитектуры, отличные от pub/sub, такие как системы клиент/сервер, также уязвимы для авторизованных отправителей сообщений, которые ведут себя злонамеренно.

См. также

[ редактировать ]
  1. ^ Хохпе, Грегор (2003). Шаблоны корпоративной интеграции: проектирование, создание и развертывание решений для обмена сообщениями . Аддисон-Уэсли Профессионал. ISBN  978-0321200686 .
  2. ^ Jump up to: а б Чен, Чен; Ток, Йоав; Гирдзияускас, Шарунас (2018). «БеаКонвей» . Материалы 12-й Международной конференции ACM по распределенным и событийным системам . Гамильтон, Новая Зеландия: ACM Press. стр. 64–75. дои : 10.1145/3210284.3210287 . ISBN  9781450357821 . S2CID   43929719 .
  3. ^ Рахимиан, Фатима; Ле Нгуен Хуу, Тхинь; Гирдзияускас, Шарунас (2012), Гёшка, Карл Михаэль; Хариди, Сейф (ред.), «Опознание местоположения в одноранговой сети публикации/подписки», Распределенные приложения и взаимодействующие системы , том. 7272, Springer Berlin Heidelberg, стр. 45–58, doi : 10.1007/978-3-642-30823-9_4 , ISBN  9783642308222
  4. ^ Бирман, К.; Джозеф, Т. (1987). «Использование виртуальной синхронизации в распределенных системах». Материалы одиннадцатого симпозиума ACM по принципам операционных систем - SOSP '87 . стр. 123–138. дои : 10.1145/41457.37515 . ISBN  089791242X . S2CID   7739589 .


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 849a83139d9a1ba6bf76b4ab88333bb4__1721284920
URL1:https://arc.ask3.ru/arc/aa/84/b4/849a83139d9a1ba6bf76b4ab88333bb4.html
Заголовок, (Title) документа по адресу, URL1:
Publish–subscribe pattern - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)