Получить доступ

Чем модель pub/sub отличается от point-to-point (очередь)?

JuniorОчереди и гарантии доставки
Ещё спрашивают так:
  • Что такое конкурирующие потребители?
Коротко

Pub/sub — каждое сообщение получает каждый подписчик (рассылка события). Point-to-point (очередь) — каждое сообщение получает один из конкурирующих потребителей (распределение работы).

  • Pub/sub: «заказ оплачен» — и складу, и уведомлениям, и аналитике
  • Очередь: «сгенерировать отчёт» — любому свободному воркеру
  • В Kafka оба через группы: разные группы — pub/sub, внутри группы — конкуренция
  • В RabbitMQ: fanout на несколько очередей — pub/sub, одна очередь с несколькими потребителями — конкуренция

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

Point-to-point. Сообщения кладутся в очередь, несколько экземпляров потребителя её разбирают; каждое сообщение достаётся одному. Так распределяют работу: фоновые задачи, обработка заказов. Добавить потребителей — обработка быстрее.

Publish/subscribe. Издатель публикует событие в тему, все подписчики получают копию. Так рассылают факты: несколько независимых реакций на одно событие, и издатель о них не знает.

Сочетание. Обычно нужно и то и другое: событие получает каждый сервис (pub/sub), а внутри сервиса его обрабатывает один экземпляр из нескольких (конкуренция). В Kafka это группы потребителей: каждый сервис — своя группа. В RabbitMQ — exchange типа fanout или topic, у каждого сервиса своя очередь, а экземпляры сервиса конкурируют за неё.

Что хотят услышать

  • Различие: всем или одному.
  • Примеры сценариев.
  • Как реализовать оба в Kafka и RabbitMQ.

Частые ошибки

  • Делать одну очередь на несколько разных сервисов — каждый получит лишь часть событий.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✗В pub/sub сообщение получает только один потребитель
  • ✓В pub/sub сообщение получают все подписчики, в point-to-point — один из потребителей
  • ✗Это одно и то же, разные названия
  • ✗Point-to-point не поддерживает нескольких потребителей вообще

Что спросят дальше

  • Как Kafka совмещает обе модели через consumer groups?
  • Что такое fanout exchange?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем