Apache Kafka

RabbitMQ contre Apache Kafka

RabbitMQ contre Apache Kafka
Dans cet article, nous allons essayer de comparer et d'établir quelques différences entre les deux courtiers de messages les plus populaires, RabbitMQ et Apache Kafka.

Chaque fois que nous souhaitons intégrer des courtiers de messages dans notre application, ce qui nous permet d'évoluer facilement et de connecter notre système de manière asynchrone, il existe de nombreux courtiers de messages qui peuvent constituer la liste dans laquelle vous devez en choisir un, comme :

Chacun de ces courtiers de messages a sa propre liste d'avantages et d'inconvénients, mais les options les plus difficiles sont les deux premières, RabbitMQ et Apache Kafka. Dans cette leçon, nous allons énumérer les points qui peuvent aider à affiner la décision d'aller avec l'un plutôt que l'autre. Enfin, il convient de souligner qu'aucun de ceux-ci n'est meilleur qu'un autre dans tous les cas d'utilisation et cela dépend complètement de ce que vous voulez atteindre, donc il n'y a pas de bonne réponse!

Nous commencerons par une présentation simple de ces outils.

Apache Kafka

Comme nous l'avons dit dans cette leçon, Apache Kafka est un journal de validation distribué, tolérant aux pannes et évolutif horizontalement. Cela signifie que Kafka peut très bien exécuter un terme diviser pour régner, il peut répliquer vos données pour assurer la disponibilité et est hautement évolutif dans le sens où vous pouvez inclure de nouveaux serveurs au moment de l'exécution pour augmenter sa capacité à gérer plus de messages.

Producteur et consommateur de Kafka

LapinMQ

RabbitMQ est un courtier de messages plus général et plus simple à utiliser qui enregistre lui-même les messages consommés par le client et conserve l'autre. Même si, pour une raison quelconque, le serveur RabbitMQ tombe en panne, vous pouvez être sûr que les messages actuellement présents dans les files d'attente ont été stockés sur le système de fichiers afin que lorsque RabbitMQ revient, ces messages puissent être traités par les consommateurs de manière cohérente.

LapinMQ de travail

Superpuissance : Apache Kafka

La superpuissance principale de Kafka est qu'il peut être utilisé comme système de file d'attente, mais ce n'est pas ce qui se limite à. Kafka est quelque chose comme un tampon circulaire qui peut évoluer autant qu'un disque sur la machine du cluster, et nous permet ainsi de pouvoir relire les messages. Cela peut être fait par le client sans avoir à dépendre du cluster Kafka car il est entièrement de la responsabilité du client de noter les métadonnées du message qu'il lit actuellement et il peut revisiter Kafka plus tard dans un intervalle spécifié pour relire le même message.

Attention, le temps de relecture de ce message est limité et peut être paramétré dans la configuration Kafka. Donc, une fois ce temps écoulé, il n'y a aucun moyen pour un client de lire à nouveau un ancien message.

Superpouvoir : LapinMQ

La superpuissance principale de RabbitMQ est qu'il est simplement évolutif, qu'il s'agit d'un système de mise en file d'attente très performant qui a des règles de cohérence très bien définies et qu'il est capable de créer de nombreux types de modèles d'échange de messages. Par exemple, il existe trois types d'échange que vous pouvez créer dans RabbitMQ :

  1. Échange direct : échange individuel de sujet
  2. Échange de sujet : A sujet est défini sur lequel différents producteurs peuvent publier un message et différents consommateurs peuvent s'engager à écouter sur ce sujet, ainsi chacun d'eux reçoit le message qui est envoyé à ce sujet.
  3. Échange de sortance : c'est plus strict que l'échange de sujet car lorsqu'un message est publié sur un échange de sortance, tous les consommateurs qui sont connectés aux files d'attente qui se lie à l'échange de sortance recevront le message.

Déjà remarqué la différence entre RabbitMQ et Kafka? La différence est que si un consommateur n'est pas connecté à un échange de sortance dans RabbitMQ lorsqu'un message a été publié, il sera perdu car d'autres consommateurs ont consommé le message, mais cela ne se produit pas dans Apache Kafka car tout consommateur peut lire n'importe quel message comme ils maintiennent leur propre curseur.

RabbitMQ est centré sur les courtiers

Un bon courtier est quelqu'un qui garantit le travail qu'il entreprend et c'est ce à quoi RabbitMQ est doué. Il est incliné vers garanties de livraison entre producteurs et consommateurs, avec des messages transitoires préférés aux messages durables.

RabbitMQ utilise le courtier lui-même pour gérer l'état d'un message et s'assurer que chaque message est remis à chaque consommateur autorisé.

RabbitMQ suppose que les consommateurs sont principalement en ligne.

Kafka est centré sur le producteur

Apache Kafka est centré sur le producteur car il est entièrement basé sur le partitionnement et un flux de paquets d'événements contenant des données et les transformant en courtiers de messages durables avec des curseurs, prenant en charge les consommateurs par lots qui peuvent être hors ligne ou les consommateurs en ligne qui souhaitent des messages à faible latence.

Kafka s'assure que le message reste sûr jusqu'à une période de temps spécifiée en répliquant le message sur ses nœuds dans le cluster et en maintenant un état cohérent.

Alors, Kafka ne fait pas présumer que l'un de ses consommateurs est principalement en ligne et qu'il ne s'en soucie pas.

Ordre des messages

Avec RabbitMQ, la commande de l'édition est gérée de manière cohérente et les consommateurs recevront le message dans la commande publiée elle-même. D'un autre côté, Kafka ne le fait pas car il suppose que les messages publiés sont de nature lourde, de sorte que les consommateurs sont lents et peuvent envoyer des messages dans n'importe quel ordre, de sorte qu'il ne gère pas non plus la commande. Cependant, nous pouvons configurer une topologie similaire pour gérer la commande dans Kafka en utilisant le échange de hachage cohérent ou plugin de partitionnement., ou encore plus de types de topologies.

La tâche complète gérée par Apache Kafka est d'agir comme un « amortisseur » entre le flux continu d'événements et les consommateurs dont certains sont en ligne et d'autres peuvent être hors ligne - ne consommant que des lots sur une base horaire ou même quotidienne.

Conclusion

Dans cette leçon, nous avons étudié les principales différences (et les similitudes aussi) entre Apache Kafka et RabbitMQ. Dans certains environnements, les deux ont montré des performances extraordinaires comme RabbitMQ consomment des millions de messages par seconde et Kafka a consommé plusieurs millions de messages par seconde. La principale différence architecturale est que RabbitMQ gère ses messages presque en mémoire et utilise donc un gros cluster (plus de 30 nœuds), alors que Kafka utilise en fait les pouvoirs des opérations d'E/S de disque séquentiel et nécessite moins de matériel.

Encore une fois, l'utilisation de chacun d'eux dépend toujours complètement du cas d'utilisation dans une application. Messagerie heureuse !

Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...
Trackpad et pointeur de souris à l'écran AppyMouse pour tablettes Windows
Les utilisateurs de tablettes ratent souvent le pointeur de la souris, surtout lorsqu'ils ont l'habitude d'utiliser les ordinateurs portables. Les sma...
Le bouton central de la souris ne fonctionne pas sous Windows 10
le bouton central de la souris vous aide à faire défiler de longues pages Web et des écrans contenant beaucoup de données. Si cela s'arrête, et bien v...