Чем различаются Kafka и RabbitMQ: простыми словами
Конспект статьи. Автор оригинала: Павел Малыгин (trusted, Иннотех)
Базовые понятия брокеров на бытовых аналогиях и сравнение Kafka и RabbitMQ.
Паттерны обмена
Request-response, fire-and-forget, publish-subscribe, point-to-point. Синхронный request-response требует, чтобы получатель был известен и доступен в момент вызова. Брокер снимает эти ограничения: отправитель не блокируется и не знает получателя.
Очередь и топик
- Очередь — сообщение получает один потребитель, после чтения оно удаляется.
- Топик — сообщение получают все подписчики.
Гарантии
At most once — быстро, но возможны потери; at least once — подтверждения и повторы, возможны дубли; exactly once — самая сложная.
RabbitMQ: умный брокер, простой потребитель
Издатель шлёт в exchange, который раскладывает по очередям; брокер сам раздаёт сообщения (push) и удаляет обработанные. Поддерживает AMQP, MQTT, STOMP.
Kafka: простой брокер, умный потребитель
Распределённый реплицируемый журнал. Сообщения не удаляются после чтения, потребитель хранит свой offset и может перечитать историю. Параллелизм определяется числом партиций. Высокая пропускная способность, но высокий порог входа.
Выбор
Kafka — большие объёмы, хранение, многократное чтение. RabbitMQ — проще в настройке, гибкая маршрутизация, асинхронный обмен в микросервисах.
Автор: Павел Малыгин (trusted, Иннотех)
Это конспект, пересказ основных идей. Полный текст, иллюстрации и примеры читайте в оригинальной статье.