Распределение и масштабирование нагрузки с использованием протокола 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.