Kafka est une plateforme de streaming distribuée qui fournit des outils efficaces pour construire des pipelines de données en temps réel. Lorsque l’on travaille avec Kafka, il est important de suivre les meilleures pratiques pour garantir une communication fiable et efficace avec le cluster de données. Dans cet article, nous allons voir quelques bonnes pratiques pour optimiser et fluidifier votre travail.
Vous souhaitez devenir incollable sur l’utilisation de Kafka pour la gestion de vos flux de données ? Notre formation Apache Kafka en inter et intraentreprise vous permettra de maitriser le système distribué afin de publier des données sur un cluster.
L’équipe Ambient IT
Kafka Consumers
Avant d’en étudier les bonnes pratiques, assurons-nous de comprendre ce que sont les Kafka consumers.
Dans Kafka, un consumer est un processus qui « s’abonne » à un ou plusieurs sujets et traite le flux d’enregistrement qui y est produit. Ils lisent les messages des sujets Kafka en tirant les données des courtiers. Contrairement aux systèmes de messagerie traditionnels, Kafka stocke tous les messages sur le serveur, et le consumer tire les messages à son propre rythme.
Chaque message d’une partition d’un sujet se voit attribuer un décalage unique. Les consumers gardent la trace des décalages qu’ils ont consommés en stockant ces informations dans un sujet Kafka spécial.
Cette fonctionnalité est clé dans l’efficacité de Kafka, car cela permet aux consumers de reprendre la lecture là où ils l’ont laissée en cas de panne ou de redémarrage. Les consumers sont également très flexibles dans la lecture des messages et ne sont pas obligés de les lire dans l’ordre chronologique de stockage.
Les groupes de consumers permettent à plusieurs consommateurs de travailler ensemble pour traiter de grands flux de données. C’est une fonctionnalité importante dans la scalabilité et dans la tolérance aux pannes de Kafka.
Quelles sont les bonnes pratiques liées aux consumers ?
Lorsque l’on travaille avec des consumers Kafka, il est essentiel de mettre en œuvre les meilleures pratiques pour garantir des performances et une fiabilité optimales.
Utiliser la dernière version
Cela peut vous sembler être le B.A-BA, mais c’est pourtant un aspect trop souvent oublié dans l’utilisation de Kafka (et de n’importe quel outil informatique d’ailleurs) mais il est crucial d’utiliser la dernière version stable de la bibliothèque consumer Kafka qui correspond à la version du courtier.
Pool de connexion
Mettre en place un pool de connexions pour les producers et les consumers Kafka permet de réduire la charge de travail liée à l’établissement et à la fermeture des connexions. C’est une excellente façon de réduire l’utilisation des ressources.
Taille des batchs
Un bon réglage de la taille de vos batchs pour les producers permet d’optimiser le débit. Des batchs importants peuvent réduire le nombre de demandes, mais également créer de la latence. Trouver un bon compromis est donc crucial.
Taille de récupération
Configurez les propriétés fetch.max.bytes et fetch.max.wait.ms pour les consumers de manière appropriée. Elles contrôlent la quantité de données récupérées en une seule requête et le temps d’attente maximal du courtier si les données ne sont pas disponibles.
Optimiser la compression
L’activation de la compression peut réduire de manière significative la quantité de données transmises, et ainsi améliorer les performances. Attention cependant, cette méthode peut également entrainer des surcharges du CPU.
Quelles sont les erreurs communes liées au consumers Kafka ?
La gestion des consumers Kafka peut parfois être difficile ou peu claire, surtout pour les débutants. Nous avons listé ici les erreurs les plus communes faites par les utilisateurs.
Erreurs de configuration
L’un des principaux écueils de l’utilisation de Kafka est la mauvaise configuration des paramètres des consommateurs. Comme vu plus haut, un paramètre request.timeout.ms trop bas peut causer des problèmes.
Utiliser Kafka comme un magasin Key-value
Kafka n’est pas conçu pour être utilisé comme magasin Key-value. L’utiliser comme tel peut conduire à des comportements inattendus, tels que des problèmes de compactage des messages et des doublons. Vous devez bien comprendre que dans Kafka, le compactage ne se produit pas immédiatement, et que votre consumer doit être en mesure de gérer les doublons potentiels.
Retarder les messages du streaming real-time
Essayer de retarder les messages dans le cadre d’une diffusion en continu en temps réel est une erreur courante chez les utilisateurs débutants. Cette pratique n’est pas recommandée, car elle peut entraîner des problèmes de performance.
Au lieu de retarder les messages, il est préférable d’utiliser des critères d’achèvement pour vos consumers pour déterminer quand un message doit être traité.
Ne pas suivre les KPI clés
Ignorer des métriques JMX importantes peut avoir des conséquences significatives sur la santé de votre cluster Kafka.
Pour une surveillance efficace de votre cluster, nous vous conseillons de commencer par des mesures clés telles que UnderReplicatedPartitions, NetworkProcessorAvgIdlePercent et RequestHandlerAvgIdlePercent. Elles vous fourniront des informations cruciales sur la santé et les performances de votre cluster.
En suivant ces bonnes pratiques, vous devriez être en mesure de créer des clusters Kafka et des applications Kafka efficaces, performantes et résilientes pour le traitement de vos données en temps réel.