Очередь сообщений и балансировка нагрузки. Я не совсем понимаю разницу
Помоги мне что-то понять. Я рассмотрел несколько корпоративных приложений и заметил, что некоторые из них используют службу очереди сообщений, например ActiveMQ или RabbitMQ. У меня есть знания на уровне поверхности о том, что делают серверы очереди сообщений, но я не совсем понимаю, почему я выбрал бы создание инфраструктуры приложений, в которой она используется, в отличие от стандартной технологии балансировки нагрузки, такой как HAProxy или тому подобной.
В чем реальная разница между ними? Похоже, что оба маршрутизатора направляют трафик и / или сообщения на узлы, которые подписываются на очередь или пул. Есть ли плюсы / минусы для каждого из них?
1 ответ
Как сказал Майкл, эти двое сильно различаются по функциям и возможностям.
Системы очереди сообщений
Основная функция служб очереди сообщений - разрешить асинхронную связь между различными частями приложения. Серверы MQ обычно позволяют настраивать произвольное количество правил маршрутизации, очередей и т. Д., Для которых сообщения публикуются частями приложения и подписываются другими частями приложения.
Взять, к примеру, приложение для транскодирования видео. Основные необходимые функции:
- пользователь загружает видео файл
- система перекодирует видео в другой формат
- система делает транскодированное видео доступным для скачивания
После завершения шага 1 вы действительно хотите, чтобы сеанс браузера пользователя зависал в течение 45 минут, пока происходит перекодирование? Нет, не думай так. Таким образом, вместо того, чтобы выполнять перекодирование синхронно, вы помещаете сообщение в очередь сообщений, которую нужно сделать. Затем это сообщение принимается серверной частью обработки вашего приложения, которая выполняет транскодирование, а затем по завершении публикует сообщение "Я закончил!" сообщение в другую очередь, которая вызывает третью часть вашего приложения, чтобы отправить пользователю по электронной почте, что его работа завершена.
В дополнение к разделению разрозненных частей вашего приложения, системы MQ разрешают задания, ну, в общем, ставить в очередь. Скажем, ваше оборудование позволяет вам обрабатывать только одно видео каждые 30 минут, но во время пиковой нагрузки ваши пользователи загружают больше, чем это. Использование MQ позволяет этим заданиям аккуратно ставиться в очередь и обрабатываться последовательно, поскольку серверная часть может это сделать.
Системы балансировки нагрузки
Основная функция балансировки нагрузки - отправлять входящие запросы от клиентов и распределять эти запросы по одному или нескольким внутренним серверам приложений.
Заключение
Иными словами, службы очереди сообщений фокусируются на асинхронном обмене данными между различными частями приложения, а службы балансировки нагрузки - на синхронном обмене данными между клиентами и одним или несколькими пулами внутренних серверов.