В чем разница между Apache kafka и ActiveMQ

Я работаю над Apache Kafka. Я хочу знать, какой из них лучше: Kafka или ActiveMQ. В чем основное различие между этими двумя технологиями? Я хочу реализовать Kafka в Spring MVC.

Ответ 1

Kafka и ActiveMQ могут иметь некоторые перекрытия, но они изначально были предназначены для разных целей. Поэтому сравнение их - это как сравнение Apple и Orange.

Кафка

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

ActiveMQ

ActiveMQ - это брокер сообщений , который поддерживает несколько протоколов обмена сообщениями, таких как AMQP, STOMP, MQTT. Он поддерживает более сложные шаблоны маршрутизации сообщений, а также Шаблоны интеграции предприятия. Обычно он используется для интеграции между приложениями/услугами, особенно в сервис-ориентированной архитектуре.

Ответ 2

Я думаю, что одна вещь, которую следует отметить в дискуссии о том, какие брокеры использовать (и когда появляется Кафка), заключается в том, что тест Kafka который часто ссылается, показывает верхний предел любого современного распределенного компьютера. Сегодня брокеры имеют примерно такую ​​же общую емкость в МБ/с. Kafka очень хорошо справляется с небольшими сообщениями (10-1024 байта) по сравнению с другими брокерами, но все же ограничивается около отметки ~ 75 Мбит/с.

Часто используется сравнение esc-to-oranges esp при разговоре "кластеризация". ActiveMQ и другие корпоративные брокеры объединяют публикацию сообщений и отслеживание подписки на потребителя. Kafka объединяет публикацию и требует от потребителя отслеживать подписку. Кажется минимальным, но его значительная разница.

Все брокеры имеют одинаковые проблемы с противодавлением - Кафка может сделать "ЛАЗЕЕ НАСТОЯЩЕЕ", где производитель не ждет, когда брокер будет синхронизироваться с диском. Это хорошо для многих случаев использования, но, вероятно, а не сценарий I-care-about-every-single-message, который ppatierno упоминает в своем слайд-шоу.

Кафка действительно хороша для горизонтального масштабирования для таких вещей, как большая обработка данных небольшими сообщениями. ActiveMQ более идеален для класса использования, часто называемого корпоративным обменом сообщениями (это просто термин, не означает, что Kafka не подходит для предприятия) - транзакционные данные (хотя Kafka добавляет это). Kiosk.. розничный магазин.. магазин и передний.. dmz обход.. данные центр-to-центр данных размещение.. и т.п

Ответ 3

Я слышу этот вопрос каждую неделю... Хотя ActiveMQ (например, IBM MQ или JMS в целом) используется для традиционного обмена сообщениями, в качестве потоковой платформы используется Apache Kafka (обмен сообщениями + распределенное хранилище + обработка данных). Оба созданы для разных вариантов использования.

Вы можете использовать Kafka для "традиционного обмена сообщениями", но не использовать MQ для специфичных для Kafka сценариев.

В статье "Apache Kafka против Enterprise Service Bus (ESB) - друзья, враги или отшельники? (https://www.confluent.io/blog/apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/)" обсуждается, почему Kafka не является конкурентоспособной, но дополняет решения по интеграции и обмену сообщениями (включая ActiveMQ) и как интегрировать оба.

Ответ 5

Архитектура Kafka отличается от ActiveMQ.

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

Ключевые отличия:

  1. Производитель Kafka не ожидает подтверждений от брокера. Общая пропускная способность будет высокой, если брокер сможет обрабатывать сообщения так же быстро, как и производитель. ActiveMQ должен был поддерживать состояние доставки каждого сообщения.

  2. Кафка имеет более эффективный формат хранения. В среднем каждое сообщение в Kafka занимало 9 байтов по сравнению с 144 байтами в ActiveMQ. Это означает, что ActiveMQ использовал 70% больше места чем кафка.

  3. Kafka - это система сообщений на основе pull, а ActiveMQ - система сообщений на основе push. Издатель отправит сообщение всем потребителям в ActiveMQ. Потребитель будет тянуть сообщения в свое время в Кафке.

  4. В Kafka - потребитель может вернуться назад к старому смещению и повторно использовать данные. Это полезно, когда вы решаете какую-то проблему и решаете повторно воспроизвести старые сообщения после разрешения проблемы.

Благодаря вышеупомянутой эффективности пропускная способность Kafka в 2x - 4x раза выше, чем у обычных систем обмена сообщениями, таких как ActiveMQ и RabbitMQ.

Более подробную информацию можно прочитать на notes.stephenholiday.com