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 для отдельных сообщений.