J'ai une question, supposons qu'il y ait un sujet T1 et que deux consommateurs C1 et C2 appartiennent à deux groupes différents et que le décalage courant est de 0. Nous savons que KAFKA maintient le décalage pour le consommateur.So si C1 consommer le message et Le décalage devient 1 alors que se passera-t-il si C2 consommer le message commence à partir de 1 décalage ou commencera à consommer le message de 0 décalage ?. Signifie que la compensation sera maintenue pour deux groupes de consommateurs différents?. P>
merci p>
5 Réponses :
Si vous avez deux consommateurs de Kafka avec une identité de groupe différente, ils liront des partitions sans aucune ingérence entre elles. Ce qui signifie que les deux consommateurs liront exactement le même ensemble de messages indépendamment. Si vous avez quatre consommateurs de Kafka avec différents identités de groupe, ils vont tous lire toutes les partitions, etc. P>
Pour répondre à votre question, C1 code> lire à partir de décalsets 0 code> et c2 code> sera lu à partir de décalage 0 code> aussi, comme ils appartiennent à deux groupes différents. P>
Comme vous l'avez mentionné, il y a deux consommateurs avec un groupe différent. Donc, dans ce cas, C2 consommera du début. Cela signifie que le décalage débutera de 0 en consommateur C2. Le décalage peut être différent uniquement si vous utiliserez le même groupe dans les deux consommateurs. p>
Lorsque les consommateurs appartiennent à différents groupes de consommateurs, ils sont censés consommer les mêmes messages que dans un modèle de publication / souscription. Lorsqu'ils se trouvent dans le même groupe de consommateurs, ils sont "concurrents" et lisent différentes partitions du sujet (attribué à l'abonnement) afin de ne pas avoir les mêmes messages. Le décalage du consommateur est enregistré dans un sujet interne __Consumer_Offset. Les messages ont le format suivant: P>
clé = [groupe, sujet, partition] Valeur = décalage p>
afin que vous puissiez voir, pour différents groupes, mais de même sujet / partition, il y a un offset différent enregistré là-bas. P>
Chaque fois qu'un nouveau groupe de consommateur est créé et qu'un consommateur tente de lire les données d'un sujet, le consommateur reçoit toujours les données du début du sujet (offset 0). p>
Kafka maintient les compensations de chaque groupe de consommation. Même si un consommateur n'est en aucun groupe de consommation, le consommateur est ajouté à un groupe généré par Kafka afin de maintenir les compensations d'un tel consommateur. Ce processus est effectué pour tous les consommateurs individuels. p>
Dans votre cas, le consommateur C2 va donc lire les données du décalage 0. p>
KAFKA maintient les compensations de consommation par groupe de consommateurs, sujet et partition, ce qui signifie que, si vous avez plusieurs consommateurs avec différents groupes de consommateurs sur le même sujet, il conservera le décalage de chaque groupe individuellement. Donc, dans ce cas, si le consommateur 1 lit les messages, le décalage du consommateur 2 ne sera pas affecté, tant qu'il appartient à un groupe de consommateurs différent. P>
Est-ce que cela répond à votre question? Les consommateurs de Kafka peuvent lire le même message de la partition a>