Frog Proger 11 октября 2024

📨 Как работают очереди и брокеры сообщений

Знаешь, почему крупные сервисы не падают под нагрузкой? Во многом благодаря очередям и брокерам сообщений. Давай разберемся, как эта «магия» работает и почему без нее не обойтись в современной разработке.
📨 Как работают очереди и брокеры сообщений
Этот материал взят из нашей еженедельной email-рассылки, посвященной бэкенду. Подпишитесь, чтобы быть в числе первых, кто получит дайджест.

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

Что такое очередь сообщений

Очередь сообщений – это структура данных, которая хранит сообщения в порядке FIFO (First In, First Out – «первый вошел, первый вышел»). Каждое новое сообщение добавляется в конец очереди, а удаляются они из начала. Эта особенность очередей сообщений позволяет реализовать асинхронную коммуникацию между производителем и потребителем сообщений, что кардинально меняет подход к взаимодействию. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно. Процесс будет выглядеть так:

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

Это самый простой пример. Очереди сообщений можно использовать для:

  1. Планирования и управления фоновыми задачами.
  2. Распределения задач между несколькими рабочими процессами с использованием шаблона конкурирующих потребителей.
  3. Управления сервисами подписки и уведомлений.
  4. Буферизации данных.
  5. Повторных попыток обработки платежей, когда неудачные транзакции помещаются в очередь для повторной обработки.

Что такое брокер сообщений

Брокер сообщений – это программное обеспечение, которое управляет одной или несколькими очередями сообщений и предоставляет дополнительные функции, такие как:

  • Маршрутизация – направление сообщений в различные пункты назначения на основе определенных критериев. Брокеры используют ключи маршрутизации для отправки сообщений в нужную очередь, подобно номеру рейса на билете.
  • Преобразование – изменение формата или содержимого сообщений. Например, замена всех чисел на специальные символы перед отправкой сообщения в очередь.
  • Трансляция протоколов – преобразование сообщений из одного протокола в другой. Например, преобразование входящего сообщения HTTP в сообщение JMS.

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

  • Сервис заказов при создании нового заказа публикует сообщение OrderCreated в брокер.
  • Сервис инвентаризации подписан на сообщение OrderCreated для обновления запасов.
  • Сервис доставки также подписан на сообщения OrderCreated для начала процесса доставки.
  • Сервис уведомлений подписан на различные события для отправки писем или push-уведомлений клиентам.
Брокер сообщений служит центральным узлом для организации коммуникации между различными сервисами
Брокер сообщений служит центральным узлом для организации коммуникации между различными сервисами
♾️ Библиотека devops’a
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека devops’a»

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Java Team Lead
Москва, по итогам собеседования
Senior Java Developer
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ