web-dev-qa-db-fra.com

Kafka: Utiliser un groupe de consommateurs commun pour accéder à plusieurs sujets

Notre cluster s'exécute Kafka 0.11 et a des restrictions strictes sur l'utilisation des groupes de consommateurs. Nous ne pouvons pas utiliser de groupes de consommateurs arbritaires, donc Admin doit créer les groupes de consommateurs requis.

Nous exécutons Kafka Connect HDFS Sinks pour lire les données des rubriques et écrire sur HDFS. Toutes les rubriques n'ont qu'une seule partition.

Je peux envisager de suivre deux modèles lors de l'utilisation des groupes de consommateurs dans Kafka HDFS Sink.

Comme le montrent les photos:

Cas 1: chaque sujet a son propre groupe de consommateurs enter image description here

Cas 2: tous les sujets ont un groupe de consommateurs commun enter image description here

Je suis conscient que lorsqu'un sujet a plusieurs partitions, et si un consommateur échoue, un autre consommateur du même groupe de consommateurs reprend cette partition.

Ma question :

La même chose se produit-elle lorsque plusieurs sujets partagent le même groupe de consommateurs? c'est-à-dire: si un consommateur a échoué (HDFS Sink), un autre consommateur (connecteur HDFS Sink) reprendra-t-il le travail et lira-t-il ce sujet?

mise à jour : Chaque Kafka HDFS Sink Connector n'est abonné qu'à un seul sujet.

Absolument oui. Les consommateurs kafka doivent surveiller les deux sujets, puis kafka attribuera les partitions (par sujet) aux membres actifs actuels du groupe de consommateurs.

Indépendamment d'avoir une ou plusieurs partitions sur chaque sujet, les consommateurs se chargeront de surveiller les partitions par sujet chaque fois qu'une défaillance du consommateur se produit dans le même groupe. En cas d'échec, le Kafka déclenchera toujours le processus rééquilibrage afin de distribuer les partitions aux autres consommateurs actifs du groupe et, par conséquent, le travail se poursuivra sur ces sujets.

0
Alexadreison

oui, tant que les deux consommateurs souscrivent () au même ensemble de sujets (topicA et topicB), les partitions de tous les sujets seront réparties entre tous les consommateurs.

dans votre cas, cela signifierait que si l'un des consommateurs échoue, les deux sujets seront attribués au consommateur survivant.

0
radai