Что такое отправка сообщений по модели «издатель – подписчик» (Pub/Sub)?


Что такое отправка сообщений по модели «издатель – подписчик» (Pub/Sub)

Обмен сообщениями по модели «издатель – подписчик» (Pub/Sub) – это асинхронный метод связи, позволяющий разработчикам легко создавать в облаке сложные с точки зрения архитектуры приложения с широкими функциональными возможностями. В современной облачной архитектуре приложения разделяют на небольшие независимые стандартные блоки – сервисы. Обмен сообщениями по модели Pub/Sub обеспечивает мгновенные уведомления о событиях для этих распределенных систем. Он поддерживает масштабируемую и надежную связь между независимыми программными модулями.

Как работает обмен сообщениями pub/sub

Система «издатель – подписчик» (pub/sub) состоит из четырех ключевых компонентов.

Сообщения

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

Темы

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

Подписчики

Абонент – это получатель сообщения. Подписчики должны зарегистрироваться (или подписаться) на интересующие их темы. Они могут параллельно выполнять разные функции или делать что-то другое с сообщением.

Издатели

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

Каковы особенности системы обмена сообщениями pub/sub

Приложения, разработанные по схеме «издатель – подписчик» (pub/sub), имеют раздельную логику приложения и коммуникации. Инфраструктура обмена сообщениями разделяет доставку сообщений между издателями и подписчиками и передает сообщения разным подписчикам асинхронно.

Система связи pub/sub имеет следующие ключевые особенности.

Push-доставка

Обмен сообщениями pub/sub мгновенно отправляет асинхронные уведомления о событиях, когда сообщения публикуются в теме. Подписчики получают уведомление о появлении сообщения.

Множественные протоколы доставки

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

Подробнее об очередности сообщений в AWS »

Fanout

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

Фильтрация

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

Мультиплексирование

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

Каковы преимущества обмена сообщениями между пабами?

Модель «издатель – подписчик» (pub/sub) позволяет реализовать архитектуру, управляемую событиями, которая необходима в ряде современных приложений. Вы можете использовать события для запуска и взаимодействия между развязанными сервисами. Событие – это изменение состояния или обновление, например, помещение товара в корзину.

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

Исключение функции опроса

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

Динамическое нацеливание

Шаблон pub/sub упрощает, делает более естественным и менее подверженным ошибкам процесс обнаружения сервисов. Вместо того чтобы вести реестр пиров, чтобы приложение могло отправлять сообщения, издатель просто публикует сообщения в теме. Затем любая заинтересованная сторона подписывает свою конечную точку на эту тему и начинает получать эти сообщения. Несколько абонентов могут меняться, обновляться или исчезать, и система динамически подстраивается.

Разделение и масштабирование независимо друг от друга

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

Упрощение общения

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

Надежность

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

Безопасность

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

В каких случаях используется обмен сообщениями pub/sub

Ниже мы описываем популярные случаи использования системы обмена сообщениями «издатель – подписчик» (pub/sub).

Выполнение параллельной асинхронной обработки

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

Доставка оповещений о приложениях и системах

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

Управление асинхронными рабочими процессами

Передавайте события между приложениями, перемещайте данные между хранилищами данных, обновляйте распределенные кэши или обновляйте записи в бизнес-системах.

Баланс рабочих нагрузок

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

Вход в несколько систем

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

Использование fanout для репликации

Репликация данных между производственной средой и средой разработки или разработка и тестирование с использованием реальных данных.

Бессерверные приложения

Направляйте асинхронные уведомления о событиях в распределенные функции и очереди сообщений для координации компонентов вашего бессерверного приложения.

Потоковая передача данных IoT

Шаблон pub/sub – это очень мощный способ взаимодействия устройств Интернета вещей (IoT). Устройства могут легко передавать данные на внутренние системы или друг другу.

В чем разница между очередями сообщений и обменом сообщениями pub/sub

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

В отличие от нее модель «издатель – подписчик» (pub/sub) обеспечивает большую гибкость. Несколько заинтересованных абонентов могут получать сообщения одновременно и асинхронно. Издателям не нужно знать, кто является их подписчиками. Обработка сообщений является более масштабируемой и надежной, а также обеспечивает лучшую производительность.

Подробнее о бессерверных технологиях на AWS »

Как AWS может поддержать ваши требования к передаче сообщений pub/sub

Amazon Web Services (AWS) имеет два сервиса, которые вы можете использовать для различных приложений с моделью «издатель – подписчик» (pub/sub).

API «издатель-подписчик» (Pub/Sub)

AWS AppSync – это полностью управляемый сервис для создания бессерверных API GraphQL и pub/sub, которые упрощают разработку приложений. Вы можете создать единую конечную точку, чтобы безопасно запрашивать, обновлять или публиковать данные.

API «издатель-подписчик», созданные на основе AWS AppSync, предоставляют возможность публиковать обновления данных в режиме реального времени в клиентах API с подпиской по бессерверным подключениям WebSocket. Вы можете создавать увлекательные впечатления в реальном времени для различных сценариев использования. Например, можно предоставлять актуальные результаты игр, финансовые данные, участие аудитории, голосование или функции, учитывающие местоположение, такие как карты и маркетинговые push-уведомления.

Ниже приведены примеры того, что можно выполнять с помощью AWS AppSync.

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

Отправка сообщений по модели «издатель – подписчик» (Pub/Sub)

Простой сервис уведомлений Amazon (Amazon SNS) упрощает создание приложений с использованием модели обмена сообщениями pub/sub. Вы можете отправлять сообщения из своих приложений клиентам или другим приложениям масштабируемым и экономически эффективным способом.

Amazon SNS предлагает несколько функций:

  • высокую пропускную способность для обмена push-уведомлениями между распределенными системами, микросервисами и бессерверными приложениями на основе событий по модели «многие ко многим»;
  • шифрование сообщений и конфиденциальность трафика;
  • распределение возможностей по категориям AWS, таким как аналитика, вычисления, контейнеры, базы данных, Интернет вещей (IoT), машинное обучение (ML), безопасность и хранилище.

Начните работу с Pub/Sub на AWS, создав бесплатный аккаунт AWS уже сегодня.

AWS: дальнейшие шаги

Дополнительные ресурсы к продукту
Бесплатные предложения по Интернету вещей 
Зарегистрировать бесплатный аккаунт

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

Регистрация 
Начать разработку в консоли

Начните разработку в Консоли управления AWS.

Вход