Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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

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

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

Вывод

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