Apache Kafka
environnement de cloud
Qu'est-ce Apache Kafka ?

Découvrez Apache Kafka, la technologie de streaming open source à l'origine de certaines des expériences utilisateur en temps réel et événementielles les plus populaires sur le Web, notamment AirBnB, Netflix et Pinterest.

Apache Kafka (Kafka) est une plateforme open source de streaming distribué qui permet (entre autres) de développer des applications en temps réel, orientées événements. Alors, qu'est-ce que cela signifie ?

Aujourd'hui, des milliards de sources de données génèrent en permanence des flux d'enregistrements de données, y compris des flux d'événements. Un événement est un enregistrement numérique d'une action qui s'est produite et du moment où elle s'est produite. En général, un événement est une action qui entraîne une autre action dans le cadre d'un processus. Un client qui passe une commande, qui choisit un siège sur un vol ou qui soumet un formulaire d'inscription sont tous des exemples d'événements. Un événement ne doit pas nécessairement impliquer une personne : par exemple, l'indication par un thermostat connecté de la température à un moment donné est également un événement.

Ces flux offrent des possibilités pour les applications qui réagissent aux données ou aux événements en temps réel. Une plateforme de streaming permet aux développeurs de créer des applications qui consomment et traitent ces flux en continu à des vitesses extrêmement élevées, avec un haut niveau de fidélité et de précision basé sur l'ordre correct de leur apparition.

LinkedIn a développé Kafka en 2011 en tant que courtier de messages à haut débit pour son propre usage, puis a ouvert et donné Kafka à l'Apache Software Foundation  (llien externe ibm.com). Aujourd'hui, Kafka est devenu la plateforme de streaming la plus utilisée, capable d'ingérer et de traiter des milliers de milliards d'enregistrements par jour sans aucun retard de performance perceptible lorsque les volumes augmentent. Des entreprises du classement Fortune 500 telles que Target, Microsoft, AirBnB et Netflix s'appuient sur Kafka pour offrir à leurs clients des expériences en temps réel basées sur les données.

La vidéo suivante fournit des informations supplémentaires sur Kafka (9:10) :


Fonctionnement de Kafka

Kafka dispose de trois fonctionnalités principales

  1. Il permet aux applications de publier des flux de données et d'événements ou de s'abonner à des flux de données ou d'événements.
  2. Il stocke les enregistrements avec précision (c'est-à-dire dans l' ordonner dans lequel ils se sont produits) d'une manière tolérante aux pannes et de manière durable.
  3. Il traite les enregistrements en temps réel (à mesure qu'ils se produisent).

Les développeurs peuvent utiliser ces fonctionnalités Kafka via quatre API :

  • API de producteur : elle permet à une application de publier un flux dans une rubrique Kafka. Une rubrique est un journal nommé qui stocke les enregistrements dans l'ordre où ils se sont produits les uns par rapport aux autres. Lorsqu'un enregistrement est écrit dans une rubrique, il ne peut pas être modifié ou supprimé ; il reste dans la rubrique pendant une période prédéfinie, par exemple, deux jours, ou jusqu'à ce que l'espace de stockage soit épuisé.
  • API de consommateur :elle permet à une application de s'abonner à une ou plusieurs rubriques et d'ingérer et de traiter le flux stocké dans la rubrique. Elle peut travailler avec les enregistrements de la rubrique en temps réel, ou ingérer et traiter des enregistrements antérieurs.
  • API de flux : elle repose sur les API de producteur et de consommateur et ajoute des fonctionnalités de traitement complexes qui permettent à une application d'effectuer un traitement de flux continu, de l'avant vers l'arrière, plus précisément, de consommer des enregistrements provenant d'une ou de plusieurs rubriques, de les analyser, de les agréger ou de les transformer selon les besoins, et de publier les flux résultants vers les mêmes dans les mêmes rubriques ou d'autres rubriques. Si les API de producteur et de consommateur peuvent être utilisées pour le traitement simple des flux, c'est l'API de flux qui permet de développer des applications plus sophistiquées de flux de données et d'événements.
  • API de connecteur : elle permet aux développeurs de créer des connecteurs, qui sont des producteurs ou des consommateurs réutilisables qui simplifient et automatisent l'intégration d'une source de données dans une grappe Kafka. Découvrez des connecteurs prêts à l'emploi pour les magasins de données courants (lien externe à ibm.com).

Performance Kafka

Kafka est une plateforme distribuée : elle fonctionne comme une grappe à tolérance aux pannes et hautement disponible qui peut couvrir plusieurs serveurs, voire plusieurs centres de données. Les rubriques Kafka sont partitionnées et répliquées de telle sorte qu'elles peuvent être mises à l'échelle pour servir des volumes élevés de consommateurs simultanés sans affecter les performances. Par conséquent, selon Apache.org, « Kafka fonctionnera de la même manière, que vous disposiez de 50 Ko ou de 50 To de stockage de persistance sur le serveur ».


Cas d'utilisation de Kafka

Kafka est principalement utilisé pour créer deux types d'application :

  • Pipelines de données en temps réel : applications conçues spécifiquement pour déplacer des millions et des millions de données ou d'enregistrements d'événements entre les systèmes de l'entreprise, à grande échelle et en temps réel, de manière fiable, sans risque d'altération et de duplication et en éliminant les autres problèmes liés généralement au déplacement de volumes de données aussi importants à grande vitesse.
  • Applications de diffusion en flux en temps réel : applications qui sont pilotées par des flux d'enregistrements ou d'événements et qui génèrent leurs propres flux. Si vous passez un peu de temps en ligne, vous rencontrez chaque jour des dizaines d'applications de ce type, qu'il s'agisse du site de vente au détail qui met continuellement à jour la quantité d'un produit dans votre magasin local ou des sites qui affichent des recommandations ou des publicités personnalisées sur la base de l'analyse du parcours de navigation.

Kafka vs RabbitMQ

RabbitMQ est un courtier en messages open source très utilisé, un type de logiciel intermédiaire qui permet aux applications, aux systèmes et aux services de communiquer entre eux en traduisant les protocoles de messagerie entre eux.

Comme Kafka a commencé comme une sorte de courtier de messages (et peut, en théorie, toujours être utilisé comme tel) et parce que RabbitMQ prend en charge un modèle de messagerie de type publication/abonnement (entre autres), Kafka et RabbitMQ sont souvent comparés comme des alternatives. Mais les comparaisons ne sont pas vraiment pratiques, et elles se perdent généralement dans des détails techniques qui n'ont rien à voir avec le choix entre les deux. Par exemple, les rubriques Kafka peuvent avoir plusieurs abonnés, alors que chaque message RabbitMQ ne peut en avoir qu'un seul, ou encore, les rubriques Kafka sont durables, alors que les messages RabbitMQ sont supprimés une fois consommés.

Ce qu'il faut retenir :

  • Kafka est une plateforme de traitement de flux qui permet aux applications de publier, de consommer et de traiter des volumes élevés de flux d'enregistrements de manière rapide et durable.
  • RabbitMQ est un courtier en messages qui permet aux applications utilisant différents protocoles de messagerie de s'envoyer des messages.

Technologies Apache souvent utilisées avec Kafka

Kafka est fréquemment utilisé avec plusieurs autres technologies Apache dans le cadre d'une solution plus large de traitement des flux, d'architecture événementielle  ou d'analytique Big Data.

Apache Spark

Apache Spark est un moteur d'analyse pour le traitement de données à grande échelle. Vous pouvez utiliser Spark pour effectuer des analyses sur les flux fournis par Apache Kafka et pour produire des applications de traitement des flux en temps réel, comme l'analyse des flux de clics mentionnée précédemment.

Apache NiFi

Apache NiFi est un système de gestion des flux de données doté d'une interface graphique de type Glisser-déposer. Comme NiFi peut fonctionner comme un producteur Kafka et un consommateur Kafka, c'est un outil idéal pour gérer les défis de flux de données que Kafka ne peut pas traiter.

Apache Flink

Apache Flink est un moteur permettant d'effectuer des calculs sur des flux d'événements à grande échelle, à une vitesse élevée et avec un faible temps d'attente. Flink peut ingérer des flux en tant que consommateur Kafka, effectuer des opérations basées sur ces flux en temps réel, et publier les résultats dans Kafka ou dans une autre application.

Apache Hadoop

Apache Hadoop est un framework logiciel distribué qui vous permet de stocker des quantités massives de données dans une grappe d'ordinateurs pour les utiliser dans l'analytique Big Data, l'apprentissage automatique, l'exploration de données et d'autres applications orientées des données qui traitent des données structurées et non structurées. Kafka est généralement utilisé pour créer un pipeline de données en temps réel vers une grappe Hadoop.


Kafka et IBM Cloud®

Kafka continuera à faire partie de la modernisation des applications, car la  demande  d'amélioration  de l'expérience client et la multiplication des applications ont un impact sur les opérations métier et informatiques. Lorsqu'il s'agit de répondre à cette demande,  l'évolution  vers une automatisation plus large  est également utile. L'idéal serait de  commencer par  de petits  projets  dont le succès est mesurable, que vous pouvez ensuite mettre à l'échelle  et optimiser pour d'autres processus et dans d'autres parties de votre organisation. 

En travaillant avec IBM, vous avez accès à des fonctionnalités d'automatisation optimisées par l'IA, y compris des flux de travail préconfigurés, pour accélérer l'innovation en rendant chaque processus plus intelligent. 

Pour aller plus loin :

  • Essayez Event Streams gratuitement  et sans engagement. Pour avoir une idée d'une application Apache Kafka, consultez les exemples IBM  (lien externe à ibm.com) en Java, Node.js et Python sur GitHub.
  • Découvrez une  version d'Event Streams conteneur native  (lien externe à ibm.com).
  • Réalisez  notre  évaluation de la maturité de l'intégration pour évaluer  votre  niveau de maturité de l'intégration dans des dimensions critiques et découvrez les actions que   vous pouvez entreprendre pour atteindre le niveau suivant. 
  • Téléchargez notre guide d'intégration Agile, qui  explore les avantages d'une approche basée sur des conteneurs, décentralisée et alignée sur les microservices pour l'intégration de solutions.   

Démarrez dès aujourd'hui avec un compte IBM Cloud.


Solutions connexes

Modernisation des applications

Créez, modernisez et gérez avec confiance les applications de façon sécurisée dans tous les clouds


Automatisation basée sur l'IA

De vos flux de travaux métier jusqu'à vos opérations informatiques, nous avons la solution qu'il vous faut avec l'automatisation basée sur l'IA.


IBM Cloud Pak for Integration

Connectez les applications, les services et les données avec IBM Cloud Pak for Integration, la plateforme d'intégration la plus complète du marché.