Альтернативы: 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.
  • Сначала парадигма под задачу, потом реализация под эксплуатацию и команду.
Проверьте себя
1. Когда RabbitMQ уместнее Kafka?
AДля event sourcing
BДля очереди задач с гибкой маршрутизацией, где сообщение обработал один воркер и оно исчезло
CДля стриминговой аналитики с replay
DДля хранения истории событий
2. Чем Redpanda отличается от Kafka?
AДругой, несовместимый API
BKafka-совместимый протокол, но реализация на C++ без JVM и ZooKeeper — проще эксплуатация
CЭто очередь, а не лог
DНе хранит данные на диске
3. Что первично при выборе брокера?
AЯзык реализации
BПарадигма под задачу: лог против очереди — потом уже конкретная реализация
CПопулярность в соцсетях
DЦвет логотипа