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

Чем Kafka принципиально отличается от RabbitMQ?

MiddleRabbitMQ и SQSKafkaRabbitMQ
Ещё спрашивают так:
  • В чём разница между Kafka и RabbitMQ по устройству?
Коротко

Kafka — распределённый журнал: сообщения хранятся заданное время независимо от чтения, потребители сами двигают offset и могут перечитать. RabbitMQ — классический брокер очередей: сообщение удаляется после подтверждения, гибкая маршрутизация через exchange.

  • Kafka: партиции, порядок в партиции, огромная пропускная способность, replay
  • RabbitMQ: маршрутизация по ключам и шаблонам, приоритеты, TTL, подтверждения на сообщение
  • Kafka — «умный клиент, простой брокер»; RabbitMQ — «умный брокер»

А ещё RabbitMQ Streams и Kafka Queues (KIP-932) сближают модели

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

Подробно

Модель Kafka. Топик разбит на партиции — упорядоченные журналы на диске. Производитель дописывает в конец, потребители читают с позиции (offset), которую сами хранят и фиксируют. Сообщения не удаляются после чтения, а живут по политике хранения (время или размер) — поэтому разные группы потребителей читают независимо, а любую можно перемотать и перечитать историю. Параллелизм — число партиций. Порядок — внутри партиции.

Модель RabbitMQ. Издатель публикует в exchange, который по правилам (direct, topic, fanout, headers) раскладывает сообщения по очередям. Потребитель получает сообщение, обрабатывает и подтверждает (ack) — после этого оно удаляется. Брокер следит за каждым сообщением: повтор неподтверждённых, DLX, TTL, приоритеты.

Следствия:

KafkaRabbitMQ
хранениежурнал, по временидо подтверждения
перечитываниеданет (кроме Streams)
маршрутизацияпо топикам и ключугибкая, exchange и bindings
порядокв партициив очереди при одном потребителе
пропускная способностьсотни тысяч–миллионы в секундудесятки тысяч
состояние потребителяoffset у клиентау брокера на сообщение

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

  • Журнал против очереди: хранение и перечитывание.
  • Offset у клиента против подтверждений на сообщение.
  • Маршрутизация, порядок, пропускная способность.

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

  • Считать Kafka «быстрой очередью».
  • Думать, что из RabbitMQ можно перечитать обработанные сообщения.

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

  • Что такое consumer group в Kafka?
  • Какие exchange-типы есть в RabbitMQ?

Разбор темы

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

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

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

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

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