Kafka

Les grands principes d'Apache Kafka

Apache Kafka est un message broker distribué open-source.

Un message broker est un intermédiaire entre applications. Il fournit un protocole de messages.

Kafka permet d'avoir un débit de messages élevé, scalable pour assurer une haute disponibilité des données.

Vos données sont en sécurité avec des clusters, sans risque de perte d'information en cas de panne.

Le processing des messages dans Apache Kafka

Kafka et la communauté Apache Confluent fournissent un grand nombre de possibilités pour produire et consommer les messages, allant de la simple consommation sans traitement particulier pour les applications, à l'agrégation complexe des données avec Kafka Stream ou autres.

Kafka propose des connecteurs avec tous types de langage en passant par Java, Python, par API Rest ce qui permet d’intégrer la consommation et/ou la production de messages à partir de tous les langages ou systèmes.

L'intégration des données avec Apache Kafka

Apache Kafka fournit une interface permettant de se connecter à un grand nombre de créateurs d'événements, tels que Elasticsearch avec Logstash et des plugins (fournis par ES) en input / output, AWS S3, bases de données SQL telles que PostgreSQL ou Postgre noSQL, MongoDB ou autres...

Scaler votre Kafka Message Broker

Avec les partitions et les groupes de consommateurs, vous pouvez ainsi scaler la consommation des messages mais aussi garder une cohérence dans l'ordre de consommation.

Par exemple :

Une application consomme des données pour les insérer dans un datamart. Chaque message est indépendant et n’a pas besoin d'avoir le précédent pour assurer une cohérence. Vous pouvez créer un groupe de consommateurs qui ingère les messages et ne sont donc pas limités.

Une seconde application a besoin des mêmes messages mais de manière ordonnée. Vous pouvez créer un second groupe de consommateurs et ingérer à une vitesse moins élevée mais en assurant l'ordre.

Attention, si les messages sont répartis dans différentes partitions, Kafka ne peut pas assurer l'ordre des messages.

Il est donc obligatoire d'avoir tous les messages dans une unique partition, mais des solutions existent pour garder un débit élevé d'ingestion des messages, cela doit être étudié en fonction du besoin.

Environnements Kafka

Infrastructure 

Kafka s’intègre dans les différents clouds très connus de type Azure, AWS ou bien Google Cloud Plateform. Nous avons également la possibilité de mettre en place Kafka on-premise ou encore utiliser le cloud fourni par apache confluent avec une offre 100% managée.

Interface utilisateur

Kafka est un outil fourni sans interface utilisateur, néanmoins nous pouvons trouver des projets annexes pour manager Kafka grâce à des applications développées par d’autres éditeurs telles que Apache Confluent GUI (payant), AKHQ (gratuit), UI for Apache Kafka (gratuit) et d’autres, étant une solution open-source beaucoup essayent de fournir leur propre solution.

Voici quelques exemples d’interface cités précédemment :

Apache Kafka

Apache Kafka

Avantages de Kafka

  • Solution sous licence open-source, cela signifie que tout le code source est disponible et utilisable sans restrictions.
  • Kafka permet de traiter en temps-réel les données et les passe à l’échelle grâce au cluster permettant de traiter des millions d’échanges par seconde, Idéal dans les cas d’IoT ou pour des solutions Big Data.
  • Architectures distribuées, ce qui permet de ne pas avoir de perte de données
  • Maintenabilité et évolution : Kafka est soutenu par Apache et le groupe Apache Confluent, ce qui permet d’avoir une communauté importante et un suivi des avancées dans le domaine
  • Simplicité pour les développeurs à intégrer Kafka dans leurs applications web ou autres
  • Message pouvant comporter des clés-valeurs, ce qui permet une répartition des messages par clés. En valeur, privilégier le format json et plus précisément Apache Avro permettant de structurer cette donnée

Dans quel cas utiliser Apache Kafka ?

  • Messaging : Cas classique d’utilisation, transmission de message entre producteur et consommateur des données. Kafka fourni une solution avec une latence faible entre les acteurs et un buffer résiliant
  • Activité de site web : Suivi de visite des pages, du trafic sur un site web
  • Monitoring : Capacité à ingérer les données provenant de différentes sources et d’agréger les métriques
  • Logging : Processus pour ingérer les logs physiques (fichiers ou autres) et les agréger pour les fournir à un système de monitoring
  • IoT : Dans le cas de capteurs ou gps ou autres avec un grand volume de données et un besoin en temps réel de récupération et de traitement des données, Kafka sera une solution idéale pour répondre à ce besoin.

Retour aux éditeurs du Big Data

Vous souhaitez rencontrer des experts Apache Kafka, ou bénéficier d'une formation sur Kafka ? Rendez vous sur la page Contact

Des conseils sur Apache Kafka à Brest, Nantes, Toulouse, Lille, Paris, Rennes, La Roche Sur Yon, Angers, Le Mans, Niort, Laval, Lyon, Grenoble, Saint-Etienne, Bordeaux, Toulouse, La Rochelle, Agen, Bayonne, Montpellier, Nîmes, Marseille, Aix-en-provence...

Next Decision pratique Kafka en Bretagne, Pays de la Loire, Région Parisienne, Ile de France, Occitanie, Nouvelle-Aquitaine, Hauts de France et Provence-Alpes-Côte d'Azur.