Maison / Technologie / Introduction à Message Brokers: Partie 1: Apache Kafka vs RabbitMQ

Introduction à Message Brokers: Partie 1: Apache Kafka vs RabbitMQ

La quantité croissante d’équipements connectés au Net a conduit à un nouveau terme, Internet des objets (ou IoT). Il est issu de la communication machine à machine et désigne un ensemble de périphériques capables d’interagir les uns avec les autres. La nécessité d’améliorer l’intégration des systèmes a entraîné le développement de courtiers de messages, particulièrement importants pour l’analyse de données et la veille stratégique. Dans cet article, nous allons examiner 2 outils de données volumineuses: Apache Kafka et Rabbit MQ.

Original publié à freshcodeit.com

Pourquoi les courtiers de messages sont-ils apparus?

Pouvez-vous imaginer la quantité actuelle de données dans le monde? De nos jours, environ 12 milliards de machines «intelligentes» sont connectées à Internet. Considérant qu’environ 7 milliards de personnes sur la planète, nous avons presque un appareil et demi par personne. D’ici 2020, leur nombre augmentera considérablement pour atteindre 200 milliardsou même plus. Avec le développement technologique, la construction de maisons «intelligentes» et d’autres systèmes automatiques, notre vie quotidienne devient de plus en plus numérisée.

Cas d’utilisation du courtier de messages

À la suite de cette numérisation, les développeurs de logiciels sont confrontés au problème de la réussite des échanges de données. Imaginez que vous avez votre propre application. Par exemple, il s’agit d’un magasin en ligne. Vous travaillez donc en permanence dans votre domaine technologique et vous devez un jour faire en sorte que l’application interagisse avec une autre. Auparavant, vous utilisiez de simples «points» de communication entre machines. Mais de nos jours, nous avons des courtiers en messages spéciaux. Ils rendent le processus d’échange de données simple et fiable. Ces outils utilisent différents protocoles qui déterminent le format du message. Les protocoles indiquent comment le message doit être transmis, traité et utilisé.

Messagerie en quelques mots

Wikipedia affirme qu’un courtier de messages “Traduit un message du protocole de messagerie formel de l’expéditeur au protocole de messagerie formel du destinataire”.

Des programmes comme celui-ci sont des éléments essentiels des réseaux informatiques. Ils assurent la transmission d’informations du point A au point B.

Original publié à freshcodeit.com

Quand un courtier de messages est-il nécessaire?

  1. Si vous souhaitez contrôler les flux de données. Par exemple, le nombre d’enregistrements dans n’importe quel système.
  2. Lorsque la tâche consiste à mettre des données dans plusieurs applications et à éviter l’utilisation directe de leur API.
  3. La nécessité de terminer les processus dans un ordre défini, comme un système transactionnel.

Nous pouvons donc dire que les courtiers en messages peuvent faire 4 choses importantes:

  • diviser l’éditeur et le consommateur
  • le magasin les messages
  • route messages
  • vérifier et organiser les messages

Il y a auto-déployé et basé sur le cloud outils de messagerie. Dans cet article, je partagerai mon expérience de travail avec le premier type.

Message broker Apache Kafka

Prix: libre

Site officiel: https://kafka.apache.org/

Ressources utiles: Documentation, livres

Avantages:

  • Facile à ramasser
  • Puissante plate-forme de diffusion d’événements
  • Tolérance aux pannes et solution fiable
  • Bonne évolutivité
  • Produit distribué gratuitement par la communauté
  • Locations multiples
  • Convient pour le traitement en temps réel
  • Excellent pour les projets Big Data

Les inconvénients:

  • Manque d’éléments prêts à l’emploi
  • L’absence de kit de surveillance complet
  • Dépendance à Apache Zookeeper
  • Pas de routage
  • Problèmes avec un nombre croissant de messages

Qu’est-ce que Netflix, eBay, Uber, le New York Times, PayPal et Pinterest ont en commun? Toutes ces grandes entreprises ont utilisé ou utilisent actuellement Apache Kafka, le courtier de messages le plus populaire au monde.

L’HISTOIRE DU DÉVELOPPEMENT DE KAFKA

Avec de nombreux avantages pour le traitement en temps réel et les projets Big Data, cette technologie de messagerie asynchrone a conquis le monde. Comment cela a-t-il commencé?

En 2010 Ingénieurs LinkedIn confrontés au problème de l’intégration d’énormes quantités de données de leur infrastructure dans une architecture lambda. Il comprenait également Hadoop et des systèmes de traitement des événements en temps réel.

Quant aux courtiers traditionnels en messages, ils ne répondaient pas aux besoins de Linkedin. Ces solutions étaient trop lourdes et lentes. L’équipe d’ingénierie a donc mis au point un système de messagerie évolutif et tolérant aux pannes, sans trop d’aspects. Le nouveau gestionnaire de files d’attente s’est rapidement transformé en une plate-forme de diffusion d’événements à part entière.

APACHE KAFKA CAPACITÉS

La technologie est devenue populaire principalement en raison de sa compatibilité. Voyons voir. Nous pouvons utiliser Apache Kafka avec une large gamme de systèmes. Elles sont:

  • applications personnalisées Web et de bureau
  • microservices, systèmes de surveillance et d’analyse
  • des puits ou des sources nécessaires
  • NoSQL, Oracle, Hadoop, SFDC

Avec l’aide d’Apache Kafka, vous pouvez créer avec succès des applications basées sur les données et gérer des systèmes dorsaux complexes. L’image ci-dessous montre les 3 principales fonctionnalités de ce gestionnaire de files d’attente.

Original publié à freshcodeit.com

Comme vous pouvez le constater, Apache Kafka est capable de:

  1. publier et souscrire flux d’enregistrements avec une évolutivité et des performances excellentes, ce qui le rend approprié pour une utilisation dans l’ensemble de la société.
  2. stocker durablement les flux, la distribution des données sur plusieurs nœuds pour un déploiement hautement disponible.
  3. processus flux de données au fur et à mesure de leur arrivée, ce qui vous permet d’agréger, de créer des paramètres de fenêtrage, de réaliser des jointures de données dans un flux, etc.

APACHE KAFKA TERMES ET CONCEPTS CLÉS

Tout d’abord, vous devez connaître l’abstraction d’un commit distribué. bûche. Ce terme déroutant est crucial pour le courtier de messages. De nombreux développeurs Web avaient l’habitude de penser aux «journaux» dans le contexte d’une fonctionnalité de connexion. Mais Apache Kafka est basé sur le journal des données. Cela signifie qu’un journal est une séquence d’insertions de données ordonnée et ajoutée uniquement. Quant aux autres concepts, ils sont:

  • les sujets (les flux d’enregistrements stockés)
  • enregistrements (ils incluent une clé, une valeur et un horodatage)
  • Apis (API du producteur, API consommateur, API Streams, API de connecteur)

L’interaction des clients et des serveurs est mise en oeuvre de manière simple et efficace Protocole TCP. C’est la norme agnostique de la langue Ainsi, le client peut être écrit dans la langue de votre choix.

PRINCIPE DE TRAVAIL DE KAFKA

Il existe 2 modèles principaux de messagerie:

  1. faire la queue
  2. publier-souscrire

Les deux ont des avantages et des inconvénients. L’avantage du premier motif est la possibilité de mettre facilement à l’échelle le traitement. D’autre part, les files d’attente ne sont pas multi-abonnés. Le second modèle offre la possibilité de diffuser des données à plusieurs groupes de consommateurs. Dans le même temps, la mise à l’échelle est plus difficile dans ce cas.

Apache Kafka combine de manière magique ces deux méthodes de traitement de données, en tirant des avantages mutuels. Il convient de noter que ce gestionnaire de files d’attente offre de meilleures garanties de commande qu’un courtier de messages traditionnel.

LES PARTICULARITÉS DE KAFKA

Combinant les fonctions de messagerie, de stockage et de traitement, Kafka n’est pas un courtier de messages commun. C’est une puissante plate-forme de diffusion d’événements capable de traiter des trillions de messages par jour. Kafka est utile à la fois pour stocker et traiter les données historiques du passé et pour le travail en temps réel. Vous pouvez l’utiliser pour créer des applications de diffusion en continu, ainsi que pour des pipelines de données en continu.

Si vous souhaitez suivre les étapes des utilisateurs de Kafka, gardez à l’esprit certaines nuances:

  • les messages n’ont pas d’ID distincts (ils sont adressés par leur décalage dans le journal)
  • le système ne vérifie pas les consommateurs de chaque sujet ou message
  • Kafka ne gère aucun index et n’autorise pas l’accès aléatoire (il ne fait que remettre les messages dans l’ordre, en commençant par l’offset)
  • le système n’a pas de suppressions et ne met pas les messages en mémoire tampon dans l’espace utilisateur (mais stratégies de stockage configurables)

CONCLUSION

En tant que solution open-source parfaite pour les statistiques en temps réel et les projets Big Data, ce courtier de messages présente certaines faiblesses. Le problème, c’est que vous devez travailler beaucoup. Vous ressentirez un manque de plugins et d’autres choses pouvant être simplement réutilisées dans votre code.

Je vous recommande d’utiliser cet outil de publication / abonnement multiple et de mise en file d’attente multiple pour optimiser le traitement de très grandes quantités de données (100 000 messages par seconde et plus). Dans ce cas, Apache Kafka saura répondre à vos besoins.

Message broker RabbitMQ

Prix: libre

Site officiel: https://www.rabbitmq.com

Ressources utiles: outils, les meilleures pratiques

Avantages:

  • Convient à de nombreux langages de programmation et protocoles de messagerie
  • Peut être utilisé sur différents systèmes d’exploitation et environnements cloud
  • Simple à utiliser et à déployer
  • Donne l’occasion d’utiliser divers outils de développement
  • Interface utilisateur intégrée moderne
  • Offre le regroupement et est très bon à cela
  • Échelle jusqu’à environ 500 000 messages par seconde

Les inconvénients:

  • Non transactionnel (par défaut)
  • A besoin d’Erlang
  • Configuration minimale pouvant être effectuée via le code
  • Problèmes liés au traitement de grandes quantités de données

La prochaine solution très populaire est écrite dans le Erlang. Comme il s’agit d’un langage de programmation fonctionnel simple et polyvalent, composé de nombreux composants prêts à l’emploi, ce logiciel ne nécessite pas beaucoup de travail manuel. RabbitMQ est connu comme un courtier de messages «traditionnel», qui convient à un large éventail de projets. Il est utilisé avec succès pour le développement de nouvelles startups et d’entreprises de premier plan.

Le logiciel est construit sur le Plateforme Open Telecom cadre de clustering et de basculement. Vous pouvez trouver de nombreuses bibliothèques clientes pour utiliser le gestionnaire de files d’attente, écrites dans tous les principaux langages de programmation.

L’HISTOIRE DU DÉVELOPPEMENT RABBITMQ

L’un des plus anciens courtiers de messages open source peut être utilisé avec différents protocoles. De nombreux développeurs Web apprécient ce logiciel en raison de ses fonctionnalités utiles, de ses bibliothèques, de ses outils de développement et de ses instructions.

En 2007, Rabbit Technologies Ltd. avait développé le système, qui implémentait à l’origine l’AMQP. C’est un protocole filaire ouvert pour la messagerie avec des fonctionnalités de routage complexes. AMQP garantissait la flexibilité multilingue de l’utilisation de solutions de messagerie en dehors de l’écosystème Java. En fait, RabbitMQ fonctionne parfaitement avec Java, Spring, .NET, PHP, Python, Ruby, JavaScript, Go, Elixir, Objective-C, Swift et bien d’autres technologies. Les nombreux plugins et bibliothèques constituent le principal avantage du logiciel.

CAPACITÉS RABBITMQ

Créé en tant que courtier de messages à usage général, RabbitMQ est basé sur le modèle de communication pub-sub. Le processus de messagerie peut être synchrone ou asynchrone, selon vos préférences. Les principales caractéristiques du courtier de messages sont les suivantes:

  • Prise en charge de nombreux protocoles et mise en file d’attente de messages, routage modifiable vers des files d’attente, différents types d’échange.
  • Le déploiement en cluster assure une disponibilité et un débit parfaits. Le logiciel peut être utilisé dans différentes zones et régions.
  • Les possibilités d’utilisation de Puppet, BOSH, Chef et Docker pour le déploiement. Compatibilité avec les langages de programmation modernes les plus populaires.
  • L’opportunité d’un déploiement simple dans les clouds privés et publics.
  • Authentification enfichable, support de TLS et LDAP, autorisation.
  • La plupart des outils proposés peuvent être utilisés pour l’intégration continue, les métriques opérationnelles et le travail avec d’autres systèmes d’entreprise.

PRINCIPE DE TRAVAIL DU RABBITMQ

RabbitMQ étant un programme axé sur les courtiers, il donne des garanties entre producteurs et consommateurs. Si vous choisissez ce logiciel, vous devez utiliser des messages transitoires plutôt que durables.

Le programme utilise le courtier pour vérifier l’état d’un message et vérifier si la remise a été effectuée avec succès. Le courtier de messages suppose que les consommateurs sont généralement en ligne.

En ce qui concerne la commande des messages, les consommateurs recevront le message dans l’ordre publié. L’ordre de publication est géré de manière cohérente.

PARTICULARITÉS RABBITMQ

Le principal avantage de ce courtier de messages réside dans son ensemble parfait de plugins, associé à une évolutivité agréable. De nombreux développeurs Web bénéficient d’une documentation claire et de règles bien définies, ainsi que de la possibilité de travailler avec différents modèles d’échange de messages. En fait, RabbitMQ convient à 3 d’entre eux:

  1. Direct modèle d’échange (échange individuel de sujet un soit un)
  2. Sujet modèle d’échange (chaque consommateur reçoit un message qui est envoyé à un sujet spécifique)
  3. Fanout modèle d’échange (tous les consommateurs connectés aux files d’attente reçoivent le message).

Ici vous pouvez voir l’écart entre Kafka et RabbitMQ. Si un consommateur n’est pas connecté à un échange fanout dans RabbitMQ, le message sera perdu. Dans le même temps, Kafka permet d’éviter cela, car tout consommateur peut lire n’importe quel message.

CONCLUSION

Quant à moi, j’aime bien RabbitMQ en raison de la possibilité d’utiliser de nombreux plugins. Ils permettent de gagner du temps et d’accélérer le travail. Vous pouvez facilement ajuster les filtres, les priorités, le classement des messages, etc. Tout comme Kafka, RabbitMQ nécessite le déploiement et la gestion du logiciel. Mais il possède une interface utilisateur intégrée pratique et permet d’utiliser SSL pour une meilleure sécurité. En ce qui concerne les capacités à gérer des charges de données volumineuses, RabbitMQ est inférieur à Kafka.

En résumé, Apache Kafka et RabbitMQ valent vraiment l’attention des développeurs de logiciels habiles. J’espère que mon article vous aidera à trouver les technologies Big Data adaptées à votre projet. Si vous avez encore des questions, n’hésitez pas à contacter Freshcode spécialistes. Lors du prochain examen, nous comparerons d’autres outils de messagerie puissants, ActiveMQ et Redis Pub / Sub.

L’article original Introduction aux courtiers de messages. Partie 1: Apache Kafka vs RabbitMQ a été publié à freshcodeit.com.

https://medium.com/media/3c851dac986ab6dbb2d1aaa91205a8eb/href


Introduction à Message Brokers: Partie 1: Apache Kafka vs RabbitMQ a été publié à l’origine dans Hacker midi sur Medium, où les gens poursuivent la conversation en soulignant et en répondant à cette histoire.

Source

A propos newstrotteur-fr

Découvrez également

Alex Kurtzman parle de l’avenir de la franchise STAR TREK et de la préservation de la fraîcheur et de la nouveauté – Newstrotteur

Sur le récent épisode du podcast de Deadline Appel d’équipage, Star Trek: Découverte producteur exécutif, …

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *