Чем модель pub/sub отличается от point-to-point (очередь)?
- Что такое конкурирующие потребители?
Pub/sub — каждое сообщение получает каждый подписчик (рассылка события). Point-to-point (очередь) — каждое сообщение получает один из конкурирующих потребителей (распределение работы).
- Pub/sub: «заказ оплачен» — и складу, и уведомлениям, и аналитике
- Очередь: «сгенерировать отчёт» — любому свободному воркеру
- В Kafka оба через группы: разные группы — pub/sub, внутри группы — конкуренция
- В RabbitMQ: fanout на несколько очередей — pub/sub, одна очередь с несколькими потребителями — конкуренция
Подробно
Point-to-point. Сообщения кладутся в очередь, несколько экземпляров потребителя её разбирают; каждое сообщение достаётся одному. Так распределяют работу: фоновые задачи, обработка заказов. Добавить потребителей — обработка быстрее.
Publish/subscribe. Издатель публикует событие в тему, все подписчики получают копию. Так рассылают факты: несколько независимых реакций на одно событие, и издатель о них не знает.
Сочетание. Обычно нужно и то и другое: событие получает каждый сервис (pub/sub), а внутри сервиса его обрабатывает один экземпляр из нескольких (конкуренция). В Kafka это группы потребителей: каждый сервис — своя группа. В RabbitMQ — exchange типа fanout или topic, у каждого сервиса своя очередь, а экземпляры сервиса конкурируют за неё.
Что хотят услышать
- Различие: всем или одному.
- Примеры сценариев.
- Как реализовать оба в Kafka и RabbitMQ.
Частые ошибки
- Делать одну очередь на несколько разных сервисов — каждый получит лишь часть событий.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Это одно и то же, разные названия
- ✗В pub/sub сообщение получает один подписчик, в очереди — все
- ✗Point-to-point не поддерживает нескольких потребителей вообще
- ✓В pub/sub сообщение получают все подписчики, в очереди — один из потребителей
Что спросят дальше
- Как Kafka совмещает обе модели через consumer groups?
- Что такое fanout exchange?
Разбор темы
- Очереди, pub/sub и гарантии доставки
Зачем брокер сообщений, queue против pub/sub, три семантики доставки, роль идемпотентности и компромисс порядок/масштаб.
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.