Брокеры сообщений Kafka и RabbitMQ в реальной жизни
Конспект статьи. Автор оригинала: Александр Борецкий (Т1)
Архитектор облачной платформы об устройстве Kafka и RabbitMQ и выборе между ними.
Kafka
Для непрерывных потоков: рекомендации, ленты, скоринг рисков, логи и мониторинг. Сообщения хранятся на диске как неизменяемый журнал.
- Топик — логический канал; партиции распределены по брокерам, порядок гарантирован только внутри партиции, сообщения с одним ключом попадают в одну партицию.
- Offset — позиция чтения; автокоммит может привести к потере или повтору, для точного контроля — ручной коммит.
- Группы потребителей и стратегии распределения партиций (Range, RoundRobin, Sticky).
- Надёжность: replication.factor, acks (0, 1, all), min.insync.replicas, идемпотентный producer.
- Retention и compact (последнее значение по ключу), экосистема: Streams, Connect, Schema Registry.
RabbitMQ
Классические очереди: сообщение обработано — удалено. Для гарантированной доставки, уведомлений, обмена между критичными системами. Exchange: direct, fanout, topic, headers. Настройки: TTL, dead letter exchange, ограничения длины, приоритеты, prefetch, ручное подтверждение, DLQ, quorum queues.
Сравнение для аналитика
Kafka — журнал событий для хранения, повторного чтения и больших потоков. RabbitMQ — очереди задач со сложной маршрутизацией и обработкой каждого сообщения. Вопросы к требованиям: нужно ли перечитывать историю, каков объём, нужна ли маршрутизация, допустимы ли потери и дубли, кто будет эксплуатировать кластер.
Автор: Александр Борецкий (Т1)
Это конспект, пересказ основных идей. Полный текст, иллюстрации и примеры читайте в оригинальной статье.