Введение в 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 | Кафка |
Это традиционная система обмена сообщениями, которая работает с небольшим количеством данных. Он имеет следующие варианты использования:
| Это распределенная система, предназначенная для обработки огромного количества данных. Он имеет следующие варианты использования:
|
Имеет поддержку транзакций. Два уровня поддержки транзакций:
Он использует TransactionStore для обработки транзакций. TransactionStore будет кэшировать все сообщения и ACKS, пока не произойдет фиксация или откат. | Изначально Kafka не поддерживала транзакции, но с момента выпуска версии 0.11 она поддерживает транзакции в некоторой степени. |
Он поддерживает состояние доставки каждого сообщения, что приводит к снижению пропускной способности. | Производители кафки не ждут подтверждения от брокеров. Таким образом, брокеры могут писать сообщения с очень высокой скоростью, что приводит к более высокой пропускной способности |
В ActiveMQ производители несут ответственность за доставку сообщений. | В Kafka потребители несут ответственность за потребление всех сообщений, которые они должны потреблять. |
Он не может гарантировать, что сообщения будут получены в том же порядке, в котором они были отправлены. | Это может обеспечить получение сообщений в том порядке, в котором они были отправлены на уровне раздела. |
Существует нечто, называемое селектором сообщений API JMS, которое позволяет потребителю указывать интересующие его сообщения. Таким образом, работа по фильтрации сообщений выполняется в JMS, а не в приложениях. | У Kafka нет концепции фильтров у брокеров, которые могли бы гарантировать, что сообщения, которые выбирают потребители, соответствуют определенному критерию. Фильтрация должна выполняться потребителями или приложениями. |
Это платформа обмена сообщениями push-типа, где провайдеры передают сообщения потребителям. | Это платформа для обмена сообщениями типа «тянуть», где потребители получают сообщения от брокеров. |
Невозможно масштабировать по горизонтали. Также нет понятия репликации. | Это очень масштабируемый. Благодаря репликации разделов, он также предлагает более высокую доступность. |
Производительность как очереди, так и темы снижается по мере увеличения числа потребителей. | Это не замедляется с добавлением новых потребителей. |
Он не предоставляет контрольные суммы для обнаружения повреждения сообщений из коробки. | Он включает контрольные суммы для обнаружения повреждения сообщений в хранилище и обладает полным набором функций безопасности. |
Вывод
Мы видели, что у Kafka и ActiveMQ разные варианты использования. Компания пойдет на Kafka, если ей придется обрабатывать огромное количество данных в режиме реального времени и в какой-то степени может нести потери сообщений. Принимая во внимание, что ActiveMQ будет правильным выбором, если он заботится об одноразовой доставке, а сообщения ценны (как в финансовых транзакциях).
Рекомендуемая статья
Это руководство по ActiveMQ против Кафки. Здесь мы обсудим ключевые отличия ActiveMQ от Кафки с помощью инфографики и сравнительной таблицы. Вы также можете взглянуть на следующие статьи, чтобы узнать больше -
- Кафка против Спарк
- Свинья против Искры
- Hadoop против Apache Spark
- Apache Storm против Kafka: 9 лучших отличий, которые вы должны знать