Сравнение очереди сообщений и балансировки нагрузки. Я не совсем понимаю разницу [закрыто]

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

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

3
задан 18 July 2013 в 23:40
1 ответ

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

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

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

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

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

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

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

12
ответ дан 3 December 2019 в 04:46

Теги

Похожие вопросы