Что происходит на кассе, когда несколько человек пытаются купить билеты, а заказа нет? ХАОС! Мы видели это в кинотеатрах на премьерах первого дня, при бронировании поездов в праздничные сезоны, на стойках регистрации рейсов при отмене рейсов и на стойках возврата денег.

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

Итак, какое решение?

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

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

Вы видели что-то подобное? Когда вы заходите на СТО, вам сразу же выдают жетон. С этим токеном вам не нужно стоять в очередях, а ждать где-нибудь в комфорте, свободно заниматься другими делами, а когда подходит ваша очередь, вы получаете уведомление о стойке, к которой вы должны пойти, чтобы выполнить свою работу.

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

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

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

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