Менеджеры очередей, брокер сообщений
Что такое брокер сообщений или менеджер очередей?
Брокер сообщений - это программное обеспечение, позволяющее приложениям, системам и сервисам взаимодействовать друг с другом и обмениваться информацией. Брокер сообщений выполняет трансляцию сообщений между формальными протоколами обмена сообщениями. Это позволяет взаимозависимым сервисам разговаривать друг с другом напрямую, даже если они написаны на разных языках или реализованы на разных платформах.
Брокеры сообщений - это программные модули, входящие в состав промежуточного программного обеспечения для обмена сообщениями или решений, ориентированных на передачу сообщений (MOM). Этот тип промежуточного ПО предоставляет разработчикам стандартизованные средства обработки потока данных между компонентами приложения, позволяя сосредоточиться на его основной логике. Он может служить распределенным коммуникационным слоем, позволяющим приложениям, работающим на разных платформах, осуществлять внутреннее взаимодействие.
Брокеры сообщений могут проверять, хранить, маршрутизировать и доставлять сообщения по назначению. Они выступают в роли посредников между другими приложениями, позволяя отправителям отправлять сообщения, не зная, где находятся получатели, активны ли они и сколько их. Это облегчает разделение процессов и сервисов в системах.
Для обеспечения надежного хранения и гарантированной доставки сообщений брокеры сообщений часто опираются на подструктуру или компонент, называемый очередью сообщений, которая хранит и упорядочивает сообщения до тех пор, пока приложения-потребители не смогут их обработать. В очереди сообщений сообщения хранятся в том порядке, в котором они были переданы, и остаются в ней до тех пор, пока не будет подтверждено их получение.
Асинхронный обмен сообщениями относится к тому типу межпрограммного взаимодействия, который обеспечивают брокеры сообщений. Он предотвращает потерю ценных данных и позволяет системам продолжать функционировать даже в условиях прерывистого соединения или задержек, характерных для сетей общего пользования. Асинхронный обмен сообщениями гарантирует, что сообщения будут доставлены один раз (и только один раз) в правильном порядке по отношению к другим сообщениям.
Брокеры сообщений могут включать в себя менеджеры очередей, обеспечивающие взаимодействие между несколькими очередями сообщений, а также сервисы, обеспечивающие маршрутизацию данных, трансляцию сообщений, сохранение и управление состоянием клиента.
Модели брокеров сообщений
Брокеры сообщений предлагают две основные модели распределения сообщений или стили обмена сообщениями.
Обмен сообщениями точка-точка
Эта модель распределения сообщений используется в очередях сообщений с отношением один к одному между отправителем и получателем сообщения. Каждое сообщение в очереди отправляется только одному получателю и потребляется только один раз. Обмен сообщениями "точка-точка" применяется в тех случаях, когда сообщение должно быть обработано только один раз. Примерами подходящих вариантов использования данного стиля обмена сообщениями являются системы расчета заработной платы и обработки финансовых транзакций. В этих системах и отправителям, и получателям необходима гарантия того, что каждый платеж будет отправлен один и только один раз.
Обмен сообщениями "публикация/подписка": В этой схеме распространения сообщений, часто называемой pub/sub
, производитель каждого сообщения публикует его в теме, а множество потребителей сообщений подписываются на темы, из которых они хотят получать сообщения.
Все сообщения, опубликованные в теме, рассылаются всем приложениям, подписанным на нее. Это широковещательный метод рассылки, при котором между издателем сообщения и его потребителями существует связь "один-ко-многим". Если, например, авиакомпания будет распространять информацию о времени посадки или задержки своих рейсов, то воспользоваться ею смогут многие: наземные бригады, выполняющие техническое обслуживание и заправку самолета, работники багажного отделения, бортпроводники и пилоты, готовящиеся к следующему рейсу, операторы визуальных дисплеев, оповещающих публику. Для данного сценария целесообразно использовать стиль сообщений pub/sub
.
Брокеры сообщений в сравнении с API
Для связи между микросервисами обычно используются REST API. Термин Representational State Transfer (REST) определяет набор принципов и ограничений, которым разработчики могут следовать при создании веб-сервисов. Любые сервисы, которые их придерживаются, смогут взаимодействовать через набор унифицированных общих операторов и запросов без статического состояния. Интерфейс прикладного программирования (API) обозначает базовый код, который, если он соответствует правилам REST, позволяет сервисам взаимодействовать друг с другом.
Для взаимодействия REST API используют протокол передачи гипертекста (Hypertext Transfer Protocol, HTTP). Поскольку HTTP является стандартным транспортным протоколом публичного Интернета, REST API широко известны, часто используются и широко взаимодействуют друг с другом. Однако HTTP - это протокол запроса/ответа, поэтому его лучше всего использовать в ситуациях, требующих синхронного запроса/ответа. Это означает, что сервисы, выполняющие запросы через REST API, должны быть спроектированы таким образом, чтобы ожидать немедленного ответа. Если клиент, получающий ответ, не работает, то служба, отправляющая запрос, будет заблокирована в ожидании ответа. Логика отказоустойчивости и обработки ошибок должна быть встроена в оба сервиса.
Брокеры сообщений обеспечивают асинхронную связь между сервисами, так что сервису-отправителю не нужно ждать ответа от сервиса-получателя. Это повышает отказоустойчивость и отказоустойчивость систем, в которых они используются. Кроме того, использование брокеров сообщений облегчает масштабирование систем, поскольку схема обмена сообщениями pub/sub позволяет легко поддерживать изменяющееся количество сервисов. Брокеры сообщений также отслеживают состояния потребителей.