PRO

Чем Kafka отличается от RabbitMQ и Redis Streams?

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

Kafka

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

RabbitMQ

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

Redis Streams

Redis Streams — структура данных Redis для упорядоченных потоков сообщений. Она поддерживает группы получателей и подтверждение обработки. Redis Streams удобен, когда Redis уже используется в системе и нужен более простой поток сообщений без отдельного кластера Kafka.

Сравнение

КритерийKafkaRabbitMQRedis Streams
Основной сценарийПоток событий и повторное чтение историиОчереди задач и маршрутизацияПоток сообщений в экосистеме Redis
Хранение историиДа, по сроку храненияОбычно сообщение удаляется после подтвержденияДа, пока поток не очищен по правилам
Повторное чтениеЕстественная часть моделиНе основной сценарийВозможно через идентификаторы и группы
МаршрутизацияОбычно по темам и ключам разделовОчень гибкая через обменники и правилаБолее простая модель потоков
ПриоритетыНе основной механизмПоддерживаются очередями с приоритетамиНе основной механизм
Типичная нагрузкаБольшие потоки событийЗадачи и команды между сервисамиПростые очереди и события рядом с Redis

Порядок сообщений

Kafka обычно гарантирует порядок внутри одного раздела, а не во всём потоке. В RabbitMQ и Redis Streams порядок также зависит от очереди, числа получателей и повторной доставки. Если порядок критичен, сообщения с одним ключом нужно направлять в одну логическую последовательность.

Как выбрать

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

Как ответить на собеседовании

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

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге