web-dev-qa-db-fra.com

Quelle est la difference entre Apache kafka et ActiveMQ

Je travaille sur Apache Kafka . Je veux savoir lequel est le meilleur: Kafka ou ActiveMQ. Quelle est la principale différence entre ces deux technologies? Je souhaite implémenter Kafka dans Spring MVC.

19
Boxer Robert

Kafka et ActiveMQ peuvent avoir des chevauchements mais ils ont été conçus à l'origine pour des buts différents. Donc, les comparer, c'est comme comparer un Apple et un Orange.

Kafka

Kafka est une plate-forme de diffusion distribuée avec une très bonne capacité de redimensionnement horizontal. Il permet aux applications de traiter et de retraiter les données streamées sur le disque. En raison de son débit élevé, il est couramment utilisé pour le streaming de données en temps réel.

ActiveMQ

ActiveMQ est un message broker polyvalent qui prend en charge plusieurs protocoles de messagerie tels que AMQP, STOMP, MQTT. Il prend en charge des modèles de routage de messages plus complexes, ainsi que les modèles d'intégration d'entreprise . En général, il est principalement utilisé pour l'intégration entre applications/services, en particulier dans un Service Oriented Architecture .

24
Chris Lam

Je pense qu’une chose qui devrait être notée dans une discussion sur les courtiers à utiliser (et quand Kafka apparaît) est que le référence Kafka qui est fréquemment référencé montre la limite supérieure de tout ordinateur distribué moderne. Les courtiers actuels ont tous à peu près la même capacité totale en Mo/s. Kafka se débrouille très bien avec les petits messages (10 à 1024 octets) par rapport aux autres courtiers, mais reste limité à environ 75 Mb/s.

Il y a souvent une comparaison entre pommes et oranges surtout quand on parle de "clustering". ActiveMQ et d'autres courtiers d'entreprise regroupent la publication de messages et le suivi des abonnements des consommateurs. Kafka regroupe la publication et oblige le consommateur à suivre son abonnement. Cela semble minime, mais c'est une différence significative.

Tous les courtiers ont les mêmes problèmes de pression - Kafka peut faire une "PERSISTENCE PAResseuse" dans laquelle le producteur n'attend pas que le courtier se synchronise sur le disque ... c'est bon pour beaucoup de cas d'utilisation scénario-care-about-Every-single-message-seul ppatierno mentionne dans son diaporama.

Kafka est vraiment bon pour la mise à l'échelle horizontale pour des choses comme le traitement de données volumineuses de petits messages. ActiveMQ est plus adapté à la classe de cas d'utilisation fréquemment appelée messagerie d'entreprise (ce n'est qu'un terme, cela ne signifie pas que Kafka n'est pas bon pour l'entreprise) - données traitées (bien que Kafka l'ajoute) .. kiosk .. magasin de détail .. magasin et avant .. dmz traversal .. publication de centre de données à centre de données .. etc.

8
Matt Pavlovich

J'entends cette question chaque semaine ... Alors qu'ActiveMQ (comme IBM MQ ou JMS en général) est utilisé pour la messagerie traditionnelle, Apache Kafka est utilisé comme plate-forme de diffusion en continu (messagerie + stockage distribué + traitement de données). Les deux sont construits pour différents cas d'utilisation. 

Vous pouvez utiliser Kafka pour la "messagerie traditionnelle", mais pas MQ pour des scénarios spécifiques à Kafka. 

L'article «Apache Kafka contre ESB (Enterprise Service Bus): amis, ennemis ou ennemis? ( https://www.confluent.io/blog/Apache-kafka-vs-enterprise-service-bus-esb-friends-enemies-or-frenemies/ ) ”explique pourquoi Kafka n'est pas compétitif mais complémentaires aux solutions d’intégration et de messagerie (y compris ActiveMQ) et comment les intégrer.

1
Kai Wähner