Альтернативы: RabbitMQ, Pulsar, Redpanda
Урок про ландшафт: чем Kafka отличается от RabbitMQ и новых игроков, и как не выбрать инструмент «по хайпу».
Выбор брокера — это выбор модели: лог (Kafka, Pulsar, Redpanda) против очереди-брокера (RabbitMQ), и компромиссов эксплуатации и совместимости.
Зачем это нужно
«Все берут Kafka» — плохой аргумент. Для простой раздачи задач воркерам RabbitMQ может быть проще и уместнее, а Redpanda — снять часть операционной боли Kafka. Понимание различий экономит и деньги, и нервы.
Kafka против RabbitMQ
| Kafka (лог) | RabbitMQ (очередь) | |
| Модель | хранимый лог, replay, многие читатели | очередь задач, сообщение исчезает |
| Маршрутизация | простая (топик/партиция) | богатая (exchange, routing keys) |
| Пропускная способность | очень высокая (млн/с) | высокая, но скромнее |
| Сильна в | стриминг, event sourcing, аналитика | распределение задач, RPC, сложный роутинг |
Правило большого пальца: нужен поток событий с историей и многими потребителями — Kafka; нужна очередь задач с гибкой маршрутизацией, где сообщение обработал один воркер и забыл — RabbitMQ.
Apache Pulsar
Pulsar — близкий конкурент с логовой моделью, но иной архитектурой: вычисления (брокеры) и хранение (узлы BookKeeper) разделены. Это упрощает масштабирование и геораспределение, и Pulsar изначально совмещает стриминг и классическую очередь. Цена — более сложная из коробки система из большего числа компонентов.
Redpanda
Redpanda — реализация, совместимая с протоколом Kafka (тот же API и клиенты), но написанная на C++ без JVM и без ZooKeeper. Цель — меньше задержка, проще эксплуатация, ниже требования к железу. Для приложения это «та же Kafka», но операционно легче. Минус — это отдельный продукт со своей зрелостью и экосистемой, хоть и API-совместимый.
Как работает под капотом
Ключевая ось выбора — лог против очереди, и она важнее бренда. Логовые системы (Kafka, Pulsar, Redpanda) хранят события, позволяют replay и обслуживают много независимых потребителей — это нужно для стриминга, аналитики, event sourcing. Брокер-очередь (RabbitMQ) оптимизирован под «доставить задачу одному обработчику и удалить», с богатой маршрутизацией. Pulsar и Redpanda не меняют логовую парадигму — они меняют операционную модель (разделение хранения/вычислений у Pulsar; отказ от JVM/ZooKeeper у Redpanda). Поэтому сначала выбирают парадигму под задачу, и лишь потом — конкретную реализацию под требования к эксплуатации и команде.
Частые ошибки
- Kafka для простой очереди задач. Если нужен один воркер на сообщение и гибкий роутинг — RabbitMQ проще.
- RabbitMQ для аналитики и replay. Очередь не хранит историю и не даёт многих независимых читателей.
- Выбор «по хайпу». Redpanda/Pulsar решают операционные задачи; парадигма (лог vs очередь) первична.
Итоги
- Главная ось — лог (Kafka/Pulsar/Redpanda) против очереди-брокера (RabbitMQ); выбирайте под задачу.
- Pulsar разделяет хранение и вычисления; Redpanda — Kafka-совместимый брокер без JVM и ZooKeeper.
- Сначала парадигма под задачу, потом реализация под эксплуатацию и команду.