Что такое message broker и зачем он нужен?
- Зачем нужна очередь сообщений?
- Что даёт асинхронное взаимодействие сервисов?
Брокер — посредник, который принимает сообщения от отправителей и доставляет получателям асинхронно: стороны не знают друг о друге и не обязаны работать одновременно.
- Развязка: отправитель не ждёт и не падает, если получатель недоступен
- Буфер: сглаживает пики — потребители разбирают в своём темпе
- Масштабирование: несколько потребителей делят поток
А ещё Цена: итоговая согласованность, дубли при повторах, ещё одна система в эксплуатации
Подробно
Что делает брокер: принимает сообщение от производителя, надёжно хранит его и выдаёт потребителю, отслеживая, что обработано. Примеры — RabbitMQ, Apache Kafka, Amazon SQS, NATS, ActiveMQ.
Зачем:
- развязка во времени — отправитель публикует и продолжает работу; если получатель лежит, сообщения подождут;
- развязка по знанию — издатель не знает, кто и сколько потребителей; новых можно добавить без изменения издателя;
- буферизация — пиковую нагрузку брокер принимает, а потребители разбирают с постоянной скоростью;
- масштабирование — несколько экземпляров потребителя делят работу;
- надёжность — сообщение не теряется при падении потребителя, повторяется.
Типичные сценарии: фоновые задачи (письма, отчёты, обработка изображений), события между микросервисами («заказ оплачен»), потоки данных в аналитику, интеграции, журналы событий.
Цена: потребитель видит изменения с задержкой; доставка обычно «хотя бы один раз» — обработка должна быть идемпотентной; порядок гарантирован не всегда; сложнее отлаживать и трассировать; брокер — ещё одна система, которую нужно эксплуатировать.
Что хотят услышать
- Определение и примеры брокеров.
- Развязка, буферизация, масштабирование.
- Сценарии применения.
- Цена асинхронности.
Частые ошибки
- Считать, что брокер гарантирует обработку ровно один раз.
- Использовать брокер там, где нужен немедленный ответ.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗База данных для постоянного хранения бизнес-объектов всех сервисов
- ✗Балансировщик HTTP-запросов, который распределяет вызовы между микросервисами
- ✓Посредник, развязывающий producer и consumer по времени и скорости: буферизует и изолирует сбои
- ✗Сервис, который заменяет REST-вызовы на gRPC
Что спросят дальше
- Чем pub/sub отличается от point-to-point?
- Какие гарантии доставки бывают?
Разбор темы
- Очереди, pub/sub и гарантии доставки
Зачем брокер сообщений, queue против pub/sub, три семантики доставки, роль идемпотентности и компромисс порядок/масштаб.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.