Очередь сообщений и балансировка нагрузки. Я не совсем понимаю разницу

Помоги мне что-то понять. Я рассмотрел несколько корпоративных приложений и заметил, что некоторые из них используют службу очереди сообщений, например ActiveMQ или RabbitMQ. У меня есть знания на уровне поверхности о том, что делают серверы очереди сообщений, но я не совсем понимаю, почему я выбрал бы создание инфраструктуры приложений, в которой она используется, в отличие от стандартной технологии балансировки нагрузки, такой как HAProxy или тому подобной.

В чем реальная разница между ними? Похоже, что оба маршрутизатора направляют трафик и / или сообщения на узлы, которые подписываются на очередь или пул. Есть ли плюсы / минусы для каждого из них?

1 ответ

Решение

Как сказал Майкл, эти двое сильно различаются по функциям и возможностям.

Системы очереди сообщений

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

Взять, к примеру, приложение для транскодирования видео. Основные необходимые функции:

  1. пользователь загружает видео файл
  2. система перекодирует видео в другой формат
  3. система делает транскодированное видео доступным для скачивания

После завершения шага 1 вы действительно хотите, чтобы сеанс браузера пользователя зависал в течение 45 минут, пока происходит перекодирование? Нет, не думай так. Таким образом, вместо того, чтобы выполнять перекодирование синхронно, вы помещаете сообщение в очередь сообщений, которую нужно сделать. Затем это сообщение принимается серверной частью обработки вашего приложения, которая выполняет транскодирование, а затем по завершении публикует сообщение "Я закончил!" сообщение в другую очередь, которая вызывает третью часть вашего приложения, чтобы отправить пользователю по электронной почте, что его работа завершена.

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

Системы балансировки нагрузки

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

Заключение

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

Другие вопросы по тегам