Maison >Problème commun >La différence entre RabbitMQ et Kafka
En termes de scénarios d'application 🎜>RabbitMQ, suivant le protocole AMQP, est intrinsèquement hautement simultané. Le langage erlanng est développé et utilisé dans une messagerie en temps réel qui nécessite une fiabilité relativement élevée. Kafka est un système de publication et d'abonnement de messages open source par Linkedin en décembre 2010. Il est principalement utilisé pour traiter des données de streaming actives et de grandes quantités de traitement de données.
1) En termes de modèle architecturalRabbitMQ suit le protocole AMQP, le courtier de RabbitMQ est composé d'Exchange, de Binding et de file d'attente, où l'échange et la liaison constituent le routage. clé du message. ;Le client Producteur communique avec le serveur en connectant le canal, et le Consommateur obtient les messages de la file d'attente pour consommation (connexion longue, s'il y a un message dans la file d'attente, il sera poussé du côté consommateur, et la boucle consommateur lit les données du flux d’entrée). RabbitMQ est centré sur le courtier ; il dispose d'un mécanisme de confirmation de message.
Kafka suit la structure générale MQ, producteur, courtier, consommateur, avec le consommateur comme centre. Les informations de consommation du message sont enregistrées sur le client consommateur. Le consommateur extrait les données par lots du courtier en fonction. le point de consommation ; aucun message Mécanisme de confirmation.
2) En termes de débitkafka a un débit élevé, utilise en interne le traitement par lots de messages, un mécanisme de copie zéro, et le stockage et l'acquisition des données sont des disques locaux Lot séquentiel les opérations ont une complexité O(1) et le traitement des messages est très efficace. rabbitMQ est légèrement inférieur à kafka en termes de débit. Leurs points de départ sont différents, RabbitMQ prend en charge la livraison fiable des messages, prend en charge les transactions et ne prend pas en charge les opérations par lots en fonction des exigences de fiabilité du stockage. mémoire ou disque dur.
3) En termes de disponibilitérabbitMQ prend en charge la file d'attente miroir Lorsque la file d'attente principale échoue, la file d'attente miroir prend le relais. Le courtier de Kafka prend en charge les modes actif et de sauvegarde.
4) En termes d'équilibrage de charge du clusterkafka utilise zookeeper pour gérer les courtiers et les consommateurs du cluster, et vous pouvez enregistrer des sujets sur zookeeper ; Grâce au mécanisme de coordination de zookeeper, le producteur enregistre les informations du courtier correspondant au sujet, qui peuvent être envoyées au courtier de manière aléatoire ou dans un sondage
Et le producteur peut spécifier des fragments en fonction de la sémantique, et le message est envoyé à un certain fragment du courtier.
L'équilibrage de charge de RabbitMQ nécessite un équilibreur de charge distinct pour la prise en charge.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!