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

Автор: Велиева С.А., Гавлиевский С.Л.

Журнал: Теория и практика современной науки @modern-j

Рубрика: Математика, информатика и инженерия

Статья в выпуске: 5 (95), 2023 года.

Бесплатный доступ

В данной публикации рассматриваются распределение и масштабирование нагрузки с помощью протокола AMQP. Даны определения компонентам брокера сообщений RabbitMQ.

Протокол amqp, брокер сообщений rabbitmq, распределение и масштабирование нагрузки

Короткий адрес: https://sciup.org/140299541

IDR: 140299541

Текст научной статьи Распределение и масштабирование нагрузки с использованием протокола AMQP

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

Рассмотрим реализацию протокола AMQP на основе брокера сообщений

Сообщение (message) – единица передаваемых данных, которая содержит какую-либо полезную нагрузку;

Обменник или точка обмена (exchange) – точка, в которую происходит отправка сообщения. Точка имеет привязку к одной или нескольким очередям. После получения сообщения обменником, данное сообщение распределяется по очередям, которые имеют привязку к обменнику;

Очередь (queue) – структура данных, которая хранит ссылки на сообщения и распределяет копии этих сообщений по потребителям При этом каждое сообщение будет назначено определенному потребителю, а не будет продублировано всем сразу;

Привязка (binding) – правило, которое связывает между собой обменники и очереди. Отношение между обменниками и очередями можно описать как многие-ко-многим. То есть у одного обменника может быть несколько очередей, так и одна очередь может быть связана с несколькими обменниками.

Потребитель (consumer) – приложение, которое получает сообщение из очереди и обрабатывает его. Для одной очереди может быть запущено несколько экземпляров одного приложения. Таким образом все сообщения будут распределяться между потребителями [1].

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

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

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

Список литературы Распределение и масштабирование нагрузки с использованием протокола AMQP

  • Rabbit MQ. Documentation [Электронный ресурс] - Режим доступа: https://www.rabbitmq.com/documentation.html. Дата обращения: 31.03.2023.
  • Оптимизация обработки сообщений RabbitMQ [Электронный ресурс] - Режим доступа: https://habr.com/ru/articles/153431/. Дата обращения: 31.03.2023.
Статья научная