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
image abstraite noire et bleue
Qu'est-ce qu'Apache Kafka ?

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 (lien externe à ibm.com). Aujourd'hui, Kafka est devenue 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

La plateforme Kafka dispose de trois fonctionnalités principales :

  1. Elle permet aux applications de publier des flux de données ou d'événements ou de s'abonner à des flux ou des événements.
  2. Elle stocke les enregistrements avec précision (c'est-à-dire dans l'ordre dans lequel ils se sont produits) d'une manière tolérante aux pannes et durable.
  3. Elle 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 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).
Performances de Kafka

Kafka est une plateforme distribuée : Elle fonctionne comme une grappe tolérante 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 persistant sur le serveur ».

Cas d'utilisation de Kafka

La plateforme Kafka est principalement utilisée 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 streaming 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 et 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 été conçu 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 vus comme des alternatives. Mais les comparaisons ne sont pas vraiment pratiques, et elles plongent souvent dans des détails techniques qui ne servent pas à choisir 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'analyse des données volumineuses.

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, avec une vitesse élevée et une faible latence. 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 cadre logiciel distribué qui vous permet de stocker des quantités massives de données dans un cluster d'ordinateurs pour les utiliser dans l'analyse de données volumineuses, l'apprentissage automatique, l'exploration de données et d'autres applications axées sur les données qui traitent des données structurées et non structurées. Kafka est généralement utilisée pour créer un pipeline de données en temps réel vers une grappe Hadoop.

Solutions connexes
Services de modernisation des applications

Créez, modernisez et gérez des applications en toute sécurité sur n'importe quel cloud, en toute confiance.

Explorer les services de conseil en modernisation des applications
Automatisation basée sur l'IA

Qu'il s'agisse des flux de travail de votre entreprise ou de vos opérations informatiques, nous avons tout ce qu'il vous faut pour automatiser vos activités grâce à l'IA.

Explorer l'automatisation optimisée par 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é.

Explorer IBM Cloud Pak for Integration
Pour aller plus loin

Kafka continuera à faire partie de la modernisation des applications, car la demande d'une meilleure expérience client et d'un plus grand nombre d'applications a un impact sur les opérations commerciales et informatiques. Lorsqu'il s'agit de répondre à cette demande, l'évolution vers une automatisation plus large est également utile. En travaillant avec IBM, vous aurez accès à des capacités d'automatisation alimenté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. Découvrez IBM Event Streams for IBM Cloud, une plateforme de streaming d'événements Kafka en tant que service entièrement gérée qui vous permet de créer des applications orientées événements dans IBM Cloud.

En savoir plus sur IBM Event Streams