Очередь сообщений (например, RabbitMQ) или Кафка для микросервисов? - PullRequest
0 голосов
/ 05 ноября 2019

Мы начинаем новый проект, где мы оцениваем технологический стек для асинхронной связи между микросервисами? Мы рассматриваем RabbitMQ и Kafka для этого.

Может кто-нибудь пролить свет на ключевые соображения, чтобы выбрать одно из этих двух?

Спасибо

Ответы [ 2 ]

1 голос
/ 14 ноября 2019

Ответ, предоставленный @Avi, копирует содержимое этого сообщения в блоге . К сожалению, этому посту почти год, и он содержит неверную информацию. Я написал эту статью , чтобы исправить неверные заявления о RabbitMQ.


ПРИМЕЧАНИЕ: команда RabbitMQ следит за rabbitmq-users список рассылки и только иногда отвечает на вопросы по StackOverflow.

1 голос
/ 05 ноября 2019

Выбор зависит от того, что именно нужно вашим микросервисам. У обоих есть что-то отличное от других.

RabbitMQ в двух словах

Кто из игроков:

  1. Потребитель
  2. Издатель
  3. Exchange
  4. Маршрут

Поток начинается с издателя, который отправляет сообщение для обмена, Exchange - это промежуточный уровень, который знает, как маршрутизировать сообщение в очередь, потребители могут определить, какиеRabbitMQ отправляет сообщение потребителю из очереди, из которой они потребляют (путем определения привязки), и после получения и получения подтверждения сообщение удаляется из очереди. Любая часть в этой системе может быть масштабирована: производитель, потребитель, а также сам RabbitMQ могут быть кластеризованы и иметь высокую доступность.

Кафка

Кто такие игроки

  1. Группы потребителей / потребителей
  2. Производитель
  3. Подключение источника Kafka
  4. Подключение приемника Kafka
  5. Раздел темы и раздела
  6. Поток Кафки
  7. Брокер
  8. Zookeeper

Кафка - надежная система, в которой участвуют несколько человек. но как только вы хорошо понимаете поток, с ним становится легко управлять и работать. Производитель отправляет запись сообщения в тему, тема - это категория или имя канала, для которого публикуются записи, их можно разбить на разделы, чтобы повысить производительность, потребители подписались на тему и начинают получать из нее сообщения, когда темасекционируя, то каждый раздел получает свой собственный экземпляр потребителя, мы называли все экземпляры одного и того же потребителя группой потребителейВ Kafka сообщения всегда остаются в теме, даже если они были использованы (лимит времени определяется политикой хранения). Кроме того, Kafka использует последовательный дисковый ввод-вывод, этот подход повышает производительность Kafka и делает его опцией лидера в реализации очередей. и безопасный выбор для случаев использования больших данных.

Comparing

Используйте Kafka, если вам нужно

  1. Журнал путешествий во времени / длительный период / фиксация
  2. Много потребителей для одного и того же сообщения
  3. Высокая пропускная способность
  4. Потоковая обработка
  5. Реплицируемость
  6. Высокая доступность
  7. Порядок сообщений

Используйте RabbitMq, если вам нужно:

  1. гибкая маршрутизация
  2. Приоритетная очередь
  3. Стандартная очередь сообщений протокола

Для получения дополнительной информации

...