Quelle est la différence entre MQTT broker et Apache Kafka
je développe une application mobile de messagerie. J'ai passé en revue la technologie nécessaire et trouvé deux MQTT & Apache Kafta. Pour moi, les deux semblent faire la même chose de la même manière (en termes d'abonnement et de publication à un sujet).
j'ai entendu dire que le MQTT est adapté pour les mobiles car il est très léger? Donc, fondamentalement, quelle est la différence entre ces deux et quel est l'avantage de chacun sur les autres?
2 réponses
Le motif principal derrière Kafka est l'évolutivité.
MQTT est un protocole avec spécification publique pour des communications client / courtier de message légères, permettant des échanges publier/souscrire. Plusieurs implémentations de bibliothèques clients et de courtiers (Mosquito, JoramMQ...) existent et sont pratiquement compatibles. MQTT spécifie simplement le transport, et vaguement la partie application (c'est-à-dire comment les données sont traitées et éventuellement stockées, comment les clients sont autorisés...). Specs n'est pas clair si les données consommées sur un sujet n'est qu'en temps réel ou éventuellement persistantes. La spécification n'indique rien sur la façon dont le courtier de messages implémentant MQTT pourrait/devrait se dimensionner.
d'autre part, Apache Kafka est un courtier de messages basé sur un "log de propagation" interne: son objectif est de stocker des quantités massives de données sur le disque, et de permettre la consommation en temps réel ou plus tard (tant que les données sont encore disponibles sur le disque). Il est conçu pour être déployable comme un groupe de plusieurs noeuds, avec de bonnes propriétés d'extensibilité. Kafka utilise son propre protocole réseau.
vous comparez donc deux choses différentes ici: un protocole pub/sub standard (avec implémentations multiples), et un message spécifique stockant/distribuant le logiciel, vaguley de la même famille avec son propre protocole.
je dirais que si vous avez besoin de stocker une quantité massive de messages, pour assurer le traitement par lots, regardez davantage Kafka. Si vous avez beaucoup de clients/applications échangeant des messages en temps réel sur de nombreux sujets indépendants regardez plus sur les implémentations de courtier de messages MQTT (ou même AMQP).
MQTT est un protocole standard (avec de nombreuses implémentations). Kafka (qui est aussi un protocole) est normalement utilisé en le téléchargeant à partir du site web Apache ou par exemple une image Confluente de Docker.
c'est comme comparer des pommes et des oranges, les deux existent pour des raisons très différentes.
la plupart des cas d'utilisation que je vois dans les environnements IoT combinent à la fois MQTT et Apache Kafka. Les périphériques edge parlent le protocole MQTT (pour les avantages qu'il a dans les environnements edge. Elles sont ensuite transmises à Apache Kafka pour intégrer les événements dans le reste de l'architecture d'entreprise.
vous pouvez le faire soit via un courtier MQTT comme HiveMQ + Apache Kafka ou via un mandataire MQTT (de sorte que vous n'avez pas besoin du courtier MQTT). Les deux options ont des compromis, bien sûr.
Voir le exemple de comment combiner MQTT avec Apache Kafka. Ou allez directement au GitHub code:" apprentissage en profondeur UDF pour KSQL pour détection D'anomalies de flux du capteur IoT MQTT Données".
j'ai aussi créé une démo live sur la façon d'intégrer Apache Kafka et MQTT.