TGViewer
Системный Аналитик Системный Аналитик @sys_sa · 19.1K subscribers
Post #138 5.57K
🆚 Kafka vs RabbitMQ: сравнение по пунктам

В предыдущих постах мы рассмотрели основы по RabbitMQ и Kafka и собрали полезные материалы для изучения. Перейдём к сравнению, что лучше?

Подход к обмену сообщениями
🔸 В RabbitMQ используется подход push, когда брокер сам активно отправляет сообщения консьюмерам, которые подписаны на очереди. Плюсы: меньше задержка и равномернее нагрузка. Минусы: меньшая гибкость для потребителя и невозможность потребления сообщений пакетами.
▪️ В Kafka используется подход pull, когда консьюмеры сами отправляют запросы в брокер раз в n миллисекунд для получения новой порции сообщений. Такой подход позволяет группировать сообщения в пакеты, достигая лучшей пропускной способности. К минусам модели можно отнести потенциальную разбалансированность нагрузки между разными консьюмерами и более высокую задержку обработки данных.

Удаление сообщений из очереди
🔸 В RabbitMQ после получения консьюмерами сообщение удаляется из очереди Благодаря этому одно и то же сообщение может быть обработано только одним консьюмером и не хранится дольше необходимого.
▪️ В Kafka сообщения после прочтения косньюмерами не удаляются и могут храниться неограниченное время. Благодаря этому одно и то же сообщение может быть обработано сколько угодно раз разными консьюмерами и в разных контекстах.

Скорость доставки сообщений
🔸 Очереди RabbitMQ работают быстрее всего на относительно небольших объёмах.
▪️ Kafka хранит большие объемы данных с минимальными издержками, поэтому подходит для передачи большого количества сообщений, + поддерживает пакетное потребление сообщений

Масштабируемость
🔸 RabbitMQ может масштабироваться горизонтально, но это требует большего количества настроек и управления
▪️ Kafka легко масштабируется горизонтально, что позволяет добавлять новые брокеры для обработки большего объема данных

Маршрутизация сообщений
🔸 В RabbitMQ все сообщения маршрутизируются через обменник (exchange) перед попаданием в очереди. RabbitMQ предлагает несколько видов маршрутизации с помощью ключей по протоколу AMQP.
▪️ У Kafka упрощённый подход к маршрутизации

Протокол
🔸 RabbitMQ поддерживает несколько стандартизированных протоколов: AMQP, MQTT, STOMP и др. Это позволяет заменить его на любой брокер на основе AMQP.
▪️ Kafka использует собственный двоичный протокол поверх TCP. Вы не сможете так просто удалить или заменить эту платформу, потому что она единственная реализует данный протокол.

Приоритезация сообщений
🔸 RabbitMQ позволяет назначать приоритет сообщениям
▪️ В Kafka приоритет для всех сообщений одинаков и его нельзя изменить. Обходной путь: создать нескольких топиков под сообщения с разным приоритетом, например, events_low, events_medium, events_high, а затем реализовать логику приоритетного чтения на стороне консьюмера.

Выводы

Kafka – это про большие данные и потоковую обработку:
➖ когда в реальном времени требуется обрабатывать огромные куски данных с частотой от тысяч до миллионов сообщений в секунду
➖ когда нужно собирать кучу данных с большого числа источников (например, системы логирования и мониторинга)
➖ когда несколько потребителей должны получить все сообщения (например, в системах подписок).

RabbitMQ подходит для более стандартной очереди или брокера сообщений:
➖ когда нужна сложная маршрутизация сообщений (например, выборочная подписка или публикация)
➖ когда нужно просто передавать краткосрочные сообщения от одного микросервиса к другому
➖ когда нужна поддержка разных протоколов обмена и более зрелый подход к стандартной очереди задач

📎 Ссылки
1. Сравнительный анализ Apache Kafka и RabbitMQ — Хабр, БФТ-Холдинг
2. Чем различаются Kafka и RabbitMQ: простыми словами — Хабр, Иннотех
3. RabbitMQ против Kafka: два разных подхода — Хабр, ITSumma
4. RabbitMQ и Apache Kafka: что выбрать — Слёрм
5. В чем разница между Kafka и RabbitMQ? — AWS

⏯️ Видео: RabbitMQ и чем он отличается от Apache Kafka за 10 минут

#интеграции #очереди #async #сравнение

➿➿➿➿➿➿➿➿
🧑‍🎓 Больше полезного в базе знаний по системному анализу
  • 🔥 12
  • 👍 3
  • ❤ 2
More from @sys_sa
  1. Sep 26, 2026Как облегчить работу ИТ-аналитика уже сейчас — без долгосрочных перестроек процессов? Обсу…
  2. Sep 24, 2026️️️️️️️️📚Курс: «Системный аналитик. Экспертный уровень». За 146 часов обучения получите а…
  3. Aug 28, 2026❓ ICAM (Incident Cause Analysis Method) ICAM (Incident Cause Analysis Method) — метод разб…
  4. Aug 19, 2026🖥 NewSQL NewSQL — класс реляционных СУБД, который совмещает привычный SQL и строгие ACID…
  5. Jul 14, 2026🔼 Server Driven UI (SDUI) Server Driven UI (SDUI) — архитектурный подход, при котором сер…
  6. Jul 7, 2026📊 Сравнение Баз данных и Хранилищ данных ▫️База данных – оперативное хранилище, где содер…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →