Введение в ActiveMQ против Кафки

Apache ActiveMQ - это многопротокольный сервер обмена сообщениями на основе Java с открытым исходным кодом. Он реализует API-интерфейс JMS (Java Message Service) и способен поддерживать различные протоколы обмена сообщениями, включая AMQP, STOMP и MQTT. Обычно используется для отправки сообщений между приложениями / службами. В этой теме мы собираемся узнать о ActiveMQ против Кафки.

С другой стороны, Apache Kafka - это программное обеспечение для потоковой обработки с открытым исходным кодом, разработанное LinkedIn (а затем пожертвованное Apache) для эффективного управления растущими данными и перехода к обработке в реальном времени из пакетной обработки. Он написан на Scala и Java и основан на модели обмена сообщениями «публикация-подписка».

Сравнение лицом к лицу между ActiveMQ и Кафкой (Инфографика)

Ниже приведены основные отличия ActiveMQ от Кафки

Ключевые отличия ActiveMQ от Кафки

ActiveMQ и Kafka предназначены для разных целей. Ниже приведены основные различия:

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

ActiveMQ поддерживает как очереди сообщений, так и публикует / подписывает системы обмена сообщениями. Кафка, с другой стороны, основана на публикации / подписке, но имеет определенные преимущества очередей сообщений.

ActiveMQ гарантирует, что сообщение будет доставлено, но с Kafka существует вероятность (как бы мала она ни была), что сообщение может не быть доставлено.

Потеря сообщения в Кафке может произойти в следующем сценарии:

  • Это может произойти при одновременном использовании сообщений. Рассмотрим ситуацию, когда потребителю приходят 2 сообщения: X и Y. Два сообщения обрабатываются параллельно. Во время обработки сообщений Y был успешным и зафиксировал смещение. Однако при обработке сообщения X выдал ошибку. Учитывая, что сообщение B имеет большее смещение, Kafka сохранит последнее смещение, и сообщение A никогда не вернется к потребителю.

Реализовать доставку сообщений в ActiveMQ в ActiveMQ гораздо проще, чем в Kafka. Дублирование сообщений в Кафке может происходить по следующему сценарию:

  • Потребитель успешно принял сообщения, а затем отправил их в локальное хранилище, но он вылетел и не смог зафиксировать смещение для Kafka до его сбоя. Когда потребитель перезапустится, Кафка доставит сообщения с последнего смещения.

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

В ActiveMQ сообщение состоит из метаданных (заголовки и свойства) и тела (которое является полезной нагрузкой).

ActiveMQ против Kafka Сравнительная таблица

Давайте обсудим 10 лучших отличий между ActiveMQ против Кафки

ActiveMQКафка
Это традиционная система обмена сообщениями, которая работает с небольшим количеством данных. Он имеет следующие варианты использования:

  • Транзакционные сообщения
  • Высокопроизводительное распространение рыночных данных
  • Модель кластеризации и асинхронных сообщений общего назначения
  • Веб-потоковая передача данных
  • Restful API для обмена сообщениями с использованием HTTP
Это распределенная система, предназначенная для обработки огромного количества данных. Он имеет следующие варианты использования:

  • обмен сообщениями
  • Отслеживание активности сайта
  • метрика
  • Агрегация журналов
  • Потоковая обработка
  • Событие Sourcing
  • Записать журнал
Имеет поддержку транзакций. Два уровня поддержки транзакций:

  • JMS Транзакции
  • XA транзакции

Он использует TransactionStore для обработки транзакций. TransactionStore будет кэшировать все сообщения и ACKS, пока не произойдет фиксация или откат.

Изначально Kafka не поддерживала транзакции, но с момента выпуска версии 0.11 она поддерживает транзакции в некоторой степени.
Он поддерживает состояние доставки каждого сообщения, что приводит к снижению пропускной способности.Производители кафки не ждут подтверждения от брокеров. Таким образом, брокеры могут писать сообщения с очень высокой скоростью, что приводит к более высокой пропускной способности
В ActiveMQ производители несут ответственность за доставку сообщений.В Kafka потребители несут ответственность за потребление всех сообщений, которые они должны потреблять.
Он не может гарантировать, что сообщения будут получены в том же порядке, в котором они были отправлены.Это может обеспечить получение сообщений в том порядке, в котором они были отправлены на уровне раздела.
Существует нечто, называемое селектором сообщений API JMS, которое позволяет потребителю указывать интересующие его сообщения. Таким образом, работа по фильтрации сообщений выполняется в JMS, а не в приложениях.У Kafka нет концепции фильтров у брокеров, которые могли бы гарантировать, что сообщения, которые выбирают потребители, соответствуют определенному критерию. Фильтрация должна выполняться потребителями или приложениями.
Это платформа обмена сообщениями push-типа, где провайдеры передают сообщения потребителям.Это платформа для обмена сообщениями типа «тянуть», где потребители получают сообщения от брокеров.
Невозможно масштабировать по горизонтали. Также нет понятия репликации.Это очень масштабируемый. Благодаря репликации разделов, он также предлагает более высокую доступность.
Производительность как очереди, так и темы снижается по мере увеличения числа потребителей.

Это не замедляется с добавлением новых потребителей.
Он не предоставляет контрольные суммы для обнаружения повреждения сообщений из коробки.Он включает контрольные суммы для обнаружения повреждения сообщений в хранилище и обладает полным набором функций безопасности.

Вывод

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

Рекомендуемая статья

Это руководство по ActiveMQ против Кафки. Здесь мы обсудим ключевые отличия ActiveMQ от Кафки с помощью инфографики и сравнительной таблицы. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -

  1. Кафка против Спарк
  2. Свинья против Искры
  3. Hadoop против Apache Spark
  4. Apache Storm против Kafka: 9 лучших отличий, которые вы должны знать