Gymterview
middle

В чем разница между Kafka и RabbitMQ?

Kafka и RabbitMQ — это две фундаментально разные системы обмена сообщениями с разными моделями доставки.

Критерий Kafka RabbitMQ
Модель Распределённый лог (append-only) Классический брокер сообщений (очереди)
Хранение Сообщения хранятся на диске до retention Сообщения удаляются после обработки
Повторное чтение Да (replay по offset) Нет (сообщение удаляется)
Потребители Pull-модель, независимые consumer groups Push-модель, один потребитель на сообщение
Производительность Миллионы msg/sec, оптимизирована для throughput Десятки тысяч msg/sec, оптимизирована для latency
Масштабирование Горизонтальное через партиции Горизонтальное, но сложнее
Гарантия доставки At-least-once, exactly-once At-least-once, at-most-once
Маршрутизация По ключу в партицию Гибкая (exchange, routing key, bindings)
Протоколы Собственный протокол AMQP, MQTT, STOMP

Когда выбрать Kafka

  • Обработка потоков данных в реальном времени
  • Интеграция с Big Data
  • Журналирование событий, event sourcing
  • Нужен replay и долгосрочное хранение

Когда выбрать RabbitMQ

  • Классические задачи очередей задач
  • Микросервисы с request-reply паттерном
  • Нужна гибкая маршрутизация (routing, topic exchange)
  • Нужны приоритетные очереди, TTL, DLQ

На собеседовании: главное различие — Kafka хранит сообщения и позволяет перечитывать (лог), а RabbitMQ удаляет после обработки (очередь). Kafka оптимизирована для высокого throughput, RabbitMQ — для гибкой маршрутизации и низкой latency для отдельных сообщений.