ELEPHANT technologies, l’ESN locale et à taille humaine spécialisée sur 2 métiers : le développement et le pilotage autour de 4 expertises : hardware, embarqué, software et web.

 

Aujourd’hui, retrouvez Jean-Bernard notre elephantgénieur back-end java qui nous parle de l’apache KAFKA, un système de messagerie facilitant la transmission de messages.

 

Let’s go !

 

 

Échange des données et problématique

 

Dans un système d’informations traditionnel d’échange de données nous retrouvons le système qui produit les données ainsi que le système qui va utiliser ou consommer ces données.  Cette architecture convient parfaitement dans un petit système. Mais dès lors qu’il s’agit d’échanger des données entre plusieurs applications, comme c’est généralement le cas dans les entreprises de nos jours, il peut y avoir de gros problèmes. Chaque système a sa façon de communiquer, a son propre protocole de communication, ainsi qu’un schéma et un format de données bien spécifiques. Faire échanger ces données entre ces différents systèmes rend donc l’intégration des données extrêmement chronophage et complexe.

 

C’est en 2009, qu’une équipe de LinkedIn s’est confrontée aux problématiques évoquées sur les échanges de données entre plusieurs systèmes. Plutôt que d’utiliser des systèmes déjà existants, comme RabbitMQ et ActiveMO, LinkedIn a décidé de créer son propre outil. Celui-ci utilise les langages SCALA et JAVA, et c’est de là qu’est né KAFKA.

 

 

KAFKA, qu'est ce que c'est ? 

 

Apache KAFKA est un système de messagerie distribué qui est basé sur un mécanisme de publications et d’abonnements. Ce qui permet de faciliter la transmission des messages entre les producteurs et les consommateurs. Ce système est capable de monter en charge (scalabilité horizontale), de supporter des débits de données très importants et d’assurer la persistance des données pendant une période déterminée. 

 

 

Aperçu de l'architecture KAFKA

 

Voyons brièvement, à travers un schéma et quelques explications, comment fonctionne l’écosystème Kafka bloc par bloc. 

 

Source : www.tutorialspoint.com 

 

  • Les producteurs: 

Les producteurs transmettent, via des messages, les données aux Brokers. Lorsque le nouveau broker est démarré, tous les producteurs le recherchent et lui envoient automatiquement un message. Dans ce système, le producteur n'attend pas les « accusés de réception » du broker et envoie les messages aussi rapidement que le broker peut les gérer. 

 

  • Les messages: 

Les messages sont organisés dans des catégories appelées « Topics », qui se constituent de partitions ordonnées. Chaque message au sein d’une partition reçoit un identifiant incrémentiel. Généralement chaque partition a plusieurs réplicas sur un ou plusieurs brokers Kafka. 

 

  • Le broker : 

Le cluster Kafka se compose généralement de plusieurs brokers (nœuds du cluster) pour maintenir l'équilibre de charge. Ces brokers sont sans état, ils utilisent donc ZooKeeper afin de maintenir l'état de leur cluster. Une instance de broker Kafka peut gérer des centaines de milliers de lectures et d'écritures par seconde, et chaque broker peut gérer des To de messages sans impacter les performances. 

 

  • Le ZooKeeper : 

Le logiciel ZooKeeper est utilisé pour gérer et coordonner les brokers Kafka. Il élit le broker leader du cluster et informe le producteur et le consommateur de la présence de tout nouveau broker ainsi que de la défaillance d’un broker dans le système Kafka. C’est après avoir reçu la notification par le ZooKeeper, que le producteur et le consommateur commencent à coordonner leur tâche avec un autre broker. 

 

  • Les consommateurs : 

Étant donné que les brokers Kafka sont sans état, le consommateur doit conserver le nombre de messages consommés en utilisant le décalage de partitions. La valeur de décalage du consommateur est notifiée par ZooKeeper. Si le consommateur reconnaît le décalage d’un message particulier, cela implique qu’il a consommé tous les messages précédents. Dans ce cas, il envoie une demande d'extraction asynchrone au broker pour disposer d'un tampon d'octets prêt à être consommé. Les consommateurs peuvent rembobiner ou passer à n'importe quel point d'une partition simplement en fournissant une valeur de décalage. 

 

 

Les 5 principales API d’Apache KAFKA :

 

Pour offrir aux applications un accès à Apache Kafka, le logiciel propose 5 principales API, à savoir : 

 

L'APIProducerpermet aux applications d'envoyer des flux de données aux rubriques du cluster Kafka. 

L'APIConsumerpermet aux applications de lire des flux de données à partir de rubriques dans le cluster Kafka. 

L'API Streams permet de transformer des flux de données de rubriques d'entrée en rubriques de sortie. 

L'APIConnect permet d'implémenter des connecteurs qui récupèrent continuellement des données d'un système ou d'une application source vers Kafka ou de Kafka vers un système ou une application réceptrice. 

L'APIAdmin permet de gérer et d'inspecter les brokers et d'autres objets Kafka. 

 

 

Dans quels cas utiliser KAFKA ?

 

Source : www.easyteam.fr/wp-content/uploads/2020/05/ApacheKafka.png 

 

 

Kafka est utilisé par de nombreuses entreprises à travers ..

 

.. Des bus de message pour transférer des millions de messages par seconde tout en jouissant d’une grande performance. 

.. Des monitoring et logspour faire de la supervision en temps réel. En effet Kafka est généralement associé à des pipelines de données de centralisation de métrique sur plusieurs applications. Il est aussi utilisé pour collecter et centraliser les logs de plusieurs applications. 

.. Des data streaming pour transmettre des données issues de sources diverses et variées en temps réel. Plusieurs applications utilisent cette fonctionnalité, comme les applications de streaming, celles faisant du machine Learning ou bien des traitements big Data. 

 

À ces quelques cas d’usages, nous avons aussi le tracking d’activités, la collecte Big Data et l’analyse en temps réel, l’ingestion des données (dans Spark ou Hadoop), l’event sourcing etc. 

 

Vous l’aurez compris, Kafka est devenu un outil majeur dans la stratégie de développement des systèmes d’informations au sein des grandes entreprises. Ceci, grâce à ses performances et à sa capacité à traiter un très grand volume de données.

 

Vous voilà maintenant fins prêts pour démarrer sur KAFKA !

 


 

Nous remercions Jean-Bernard pour son article, en espérant que nous vous avons donné envie d’utiliser KAFKA dans vos projets. Si vous souhaitez découvrir d’autres articles techniques, c’est par ici : https://www.elephant-technologies.fr/les-actualites?news_category_filter%5Bcategory%5D=TECH  

 


Sources:  

https://kafka.apache.org/documentation/#api 

https://kafka.apache.org/intro 

https://www.ionos.fr/digitalguide/serveur/know-how/apache-kafka/