Logo Zéphyrnet

Kafka Basics : Introduction au groupe de consommateurs Kafka et comment peut-il être utilisé ?

Date :

Qu'est-ce qu'Apache Kafka ?

Crédit image: Unsplash

Apache Kafka est un magasin de données distribué conçu pour la saisie et le traitement de données en temps réel. Les données en continu sont des données générées en continu par des centaines de sources de données, qui envoient généralement des enregistrements de données en même temps. Une plateforme de streaming doit être capable de faire face à l'afflux constant de données et de les traiter de manière séquentielle et progressive.

Les utilisateurs peuvent utiliser Kafka à trois fins différentes :

Des flux d'enregistrements sont publiés et souscrits.
Les flux d'enregistrements doivent être stockés dans le même ordre que celui dans lequel ils ont été créés.
Traitement en temps réel des flux de données
Kafka est le plus souvent utilisé pour créer des pipelines de données de streaming en temps réel et des applications qui s'adaptent aux flux de données. Il combine les communications, le stockage et le traitement des flux pour fournir un stockage et une analyse des données historiques et en temps réel.

Groupe de consommateurs

A Consommateur Kafka groupe est un groupe de personnes qui travaillent ensemble pour consommer des informations sur un certain sujet. Les consommateurs du groupe sont répartis en partitions pour chacun des thèmes. Au fur et à mesure que de nouveaux membres rejoignent le groupe et que les anciens partent, les partitions sont réaffectées afin que chaque membre obtienne une part proportionnelle des partitions. Rééquilibrer le groupe, c'est comme ça que ça s'appelle.

La différence fondamentale entre l'ancien consommateur "de haut niveau" et le nouveau consommateur est que le premier s'appuie sur ZooKeeper pour la gestion du groupe, tandis que le second s'appuie sur un protocole de groupe construit par Kafka. L'un des courtiers est désigné comme coordinateur du groupe dans ce protocole, et il est en charge de la gestion des membres du groupe ainsi que de leurs affectations de partition.

Le coordinateur de chaque groupe est choisi parmi les responsables du sujet compensations internes __compensations consommateurs, qui stocke les compensations engagées. Essentiellement, l'ID du groupe est haché vers l'une des partitions du sujet, et le leader de cette partition est choisi comme coordinateur. Par conséquent, l'administration des groupes de consommateurs est répartie assez uniformément entre tous les courtiers du cluster, ce qui permet au nombre de groupes d'augmenter à mesure que le nombre de courtiers augmente.

Configuration du consommateur Kafka

Crédit image: unsplash

Quelques-uns des paramètres de configuration les plus importants sont décrits ci-dessous, ainsi que la façon dont ils affectent le comportement des consommateurs.

Les paramètres par défaut

Le seul paramètre obligatoire est bootstrap.servers, mais vous devez également définir un client.id afin de pouvoir facilement lier les requêtes à l'instance client qui les a émises. Afin d'appliquer les quotas de clients, tous les consommateurs d'un groupe donné auront généralement le même ID client.

Créer un groupe

Si vous utilisez l'API d'affectation simple et que vous n'avez pas besoin de conserver les décalages dans Kafka, vous devez toujours configurer group.id. La valeur session.timeout.ms peut être remplacée pour ajuster le délai d'expiration de la session.
La valeur session.timeout.ms peut être remplacée pour ajuster le délai d'expiration de la session. Dans les clients C/C++ et Java, le délai d'expiration par défaut est de 10 secondes, mais vous pouvez le prolonger pour éviter un rééquilibrage excessif dû à une mauvaise connectivité réseau ou à de longues pauses GC, par exemple.

Le principal inconvénient de l'adoption d'un délai d'expiration de session plus long est qu'il faut plus de temps au coordinateur pour identifier quand une instance de consommateur a échoué, ce qui signifie qu'il faut plus de temps à un autre consommateur du groupe pour prendre ses partitions. Les arrêts normaux, en revanche, sont déclenchés par l'envoi par le consommateur d'une demande explicite au coordinateur pour quitter le groupe, provoquant un rééquilibrage immédiat.

max.poll.interval.ms est une autre propriété qui peut avoir un impact sur un rééquilibrage excessif. Ce paramètre définit la durée maximale entre les appels de méthode d'interrogation avant que le processus consommateur ne soit jugé comme ayant échoué. Si votre programme nécessite plus de temps pour traiter les messages que la valeur par défaut de 300 secondes, vous pouvez l'augmenter en toute sécurité.

Gestion de la compensation

La stratégie de réinitialisation de décalage et l'activation ou non de la validation automatique sont les deux options les plus importantes qui affectent la gestion des décalages. Tout d'abord, si enable.auto.commit est défini sur true (ce qui est la valeur par défaut), le consommateur validera les décalages à l'intervalle défini par auto.commit.interval.ms. Le délai d'attente est défini sur 5 secondes par défaut.
Les décalages de validation automatique sont activés par défaut sur le consommateur. Vous obtenez une livraison "au moins une fois" en utilisant la validation automatique : bien que Kafka s'assure qu'aucun message ne sera perdu, il est possible que des doublons se produisent. La propriété de configuration auto.commit.interval.ms agit comme un cron avec une période choisie par l'utilisateur. Si le consommateur tombe en panne, toutes les partitions détenues par le consommateur en panne verront leurs positions réinitialisées au dernier décalage validé après un redémarrage ou un rééquilibrage. La dernière position validée peut être aussi ancienne que l'intervalle de validation automatique lui-même si cela se produit. Tous les messages reçus depuis le commit précédent doivent être relus.

Outil de commande du groupe de consommateurs Kafka

Crédit image: Unsplash

L'état des groupes de consommateurs peut être consulté à l'aide d'un utilitaire d'administration Kafka.

Groupes par ordre alphabétique

La fonction kafka-consumer-groups incluse dans la distribution Kafka peut être utilisée pour acquérir une liste des groupes actifs dans le cluster. Cela peut prendre beaucoup de temps sur un grand cluster car il collecte la liste en inspectant chaque courtier.
bin/kafka-consumer-groups – hôte du serveur d'amorçage : 9092 – liste

Description du groupe

La fonction kafka-consumer-groups peut également être utilisée pour collecter des données sur un groupe spécifique. Par exemple, exécutez la commande suivante pour voir les affectations actuelles pour le groupe foo :
bin/kafka-consumer-groups –hôte du serveur d'amorçage :9092 –describe –group foo

Conclusion

Dans la description ci-dessus, nous pouvons voir le groupe de consommateurs Kafka et comment il est utilisé tout au long du processus.

Source : Platon Data Intelligence : PlatoData.io

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?