ActiveMQ против Apollo против Kafka

У меня нет предыдущего опыта работы с * MQ, и я хочу расширить знания о JMS и очередях сообщений в целом. Таким образом, мне интересно, следует ли мне начать с ActiveMQ или просто «игнорировать» его и начать с обучения Apollo. Является ли Apollo таким же полным, как ActiveMQ? Реализует ли он JMS 2.0 (я вижу, что ActiveMQ застрял с 1.1)? Я буду упускать что-то действительно важное?

Кроме того, как Kafka сравнивается с этими двумя решениями?


person Martin    schedule 27.12.2014    source источник
comment
Также ознакомьтесь с новым ActiveMQ Artemis: activemq.apache.org/artemis   -  person mjn    schedule 29.06.2015


Ответы (4)


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

Apache Apollo - это попытка написать новое ядро ​​для ActiveMQ, способное справиться с большим количеством клиентов и сообщений. В нем нет всех хороших и удобных функций ActiveMQ, но он масштабируется намного лучше. Apache Apollo - это действительно быстрая реализация MQ, если вы предоставите ему большой многоядерный сервер и тысячи одновременных подключений. Он имеет приятный и простой пользовательский интерфейс, но не является универсальным решением.

Похоже, что продолжается попытка объединить ряд функций ActiveMQ с HornetQ под названием ActiveMQ Artemis. HornetQ поддерживает JMS2.0, поэтому я скромно предполагаю, что он, скорее всего, появится в ActiveMQ 6.x.

JIRA, Github < / а>

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

person Petter Nordlander    schedule 27.12.2014
comment
Спасибо! Я думаю, что Apache Apollo - это то, что нужно в моем случае. - person Martin; 27.12.2014
comment
Если я (частично) понимаю отношение ActiveMQ к Apollo (более новая реализация, основанная на предыдущем опыте и т. Д.), Каково общее видение (цель, мотивация) Artemis? - person Jacek Cz; 20.09.2015
comment
Apollo в каком-то смысле не смог стать новым неблокирующим ядром AMQ, поскольку для этого не хватало программистов Scala. Видение Artemis, на мой взгляд - а я не являюсь официальным лицом ActiveMQ - состоит в том, чтобы сделать то, что Apollo не смог сделать. Шансы, вероятно, больше с продуктом, протестированным в боевых условиях (HornetQ), написанным на языке основного потока (Java), чем написанием с нуля. Оба нацелены на одну и ту же цель - неблокирующий ActiveMQ для поддержки новых требований IoT и мобильных приложений, среди прочего. - person Petter Nordlander; 21.09.2015

Это старый вопрос, но здесь я дам более современный ответ.

  • Проект Apollo неофициально мертв, и они предполагают, что Artemis - это новая популярность. (ссылка) (по-видимому) застопорившаяся разработка Apollo не дает мне уверенность в будущем Артемиды.
  • Мой опыт аналогичен ответу Петтера в том, что ActiveMQ обладает широким набором функций и возможностей. Однако похоже, что в каждом выпуске исправляются случайные сбои и утечки памяти, а это не внушает доверия. Он стабилен для моего проекта (который использует кластеризацию), но мы видели странное поведение и сбои в брокере за последние дюжину или около того выпусков (в настоящее время используется 5.14.3)
  • Я не использовал RabbitMQ (мой текущий проект привязан к ActiveMQ), но я попробую его в следующем проекте, которому нужна шина обмена сообщениями. Мы надеемся, что отсутствие у кухонной мойки функций, которые нужно поддерживать, сделает ее более стабильной.

РЕДАКТИРОВАТЬ: Выпуск 2.3.0 Apache Artemis произошел ~ 5 сентября 2017 года. Так что, похоже, на данный момент он прогрессирует. Но (ссылка) журнал изменений по-прежнему кажется слишком пугающим.

person Matthew B.    schedule 23.08.2016
comment
FWIW, разработка ActiveMQ Artemis сейчас намного активнее, чем когда-либо была разработка Apollo. Фактически, количество участников Artemis уже больше, чем собственно ActiveMQ, по крайней мере, согласно GitHub. Artemis также уже коммерциализирована как часть Red Hat JBoss AMQ 7. . - person Justin Bertram; 21.09.2017

Я провожу тест производительности ActiveMQ, Apollo, HornetQ при непостоянном сценарии и постоянном сценарии, я думаю, вам будет полезно выбрать, какой из них следует использовать, ссылка, как показано ниже: http://hiramchirino.com/jms-benchmark/ubuntu-2600k/index.html.

person Tommy    schedule 21.03.2017
comment
Вот более свежий тест, проведенный с более широким спектром решений для обмена сообщениями: softwaremill.com/mqperf. Apollo не был включен, поскольку он больше не находится в активной разработке, но включены ActiveMQ 5.x и ActiveMQ Artemis. - person Justin Bertram; 21.09.2017

Apache Kafka можно охарактеризовать как «платформу распределенной потоковой передачи», где ActiveMQ, MOM (промежуточное ПО, ориентированное на обмен сообщениями), является «Брокер сообщений общего назначения».

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

ActiveMQ поддерживает семантику pub / sub и точка-точка. В последнем случае очередь обрабатывает отдельные сообщения между одним производителем и конкретным потребителем. Это, как и pub / sub, является асинхронным, но работает несколько иначе: если потребитель получает сообщение в очереди, но не может его подтвердить, сообщение затем отправляется другому потребителю. ActiveMQ также поддерживает несколько протоколов обмена сообщениями, включая AMQP, STOMP, JMS, CAMEL и MQTT.

Хотя Apache Kafka может быть идеальным помощником для простой асинхронной связи; Некоторые, похоже, предпочитают ActiveMQ для более сложных шаблонов маршрутизации, таких как корпоративные шаблоны, однако многие утверждают, что Kafka является улучшением по сравнению с ActiveMQ, по таким причинам, как более высокая пропускная способность, более эффективное управление разделы для журналов / тем и более тонкие ACL для потребителей, использующих тему.

person John Hammink    schedule 17.04.2019