web-dev-qa-db-fra.com

Que signifie "Rééquilibrage" dans Apache Kafka contexte?

Je suis un nouvel utilisateur de Kafka et le teste depuis environ 2 ou 3 semaines maintenant. Je crois avoir bien compris comment Kafka = fonctionne pour la plupart, mais après avoir essayé d’adapter l’API pour mon propre Kafka (ceci est obscur, mais je suis les directives du nouveau KafkaConsumer qui est supposé être disponible pour v 0.9, qui est sur le "coffre" repo atm) J'ai eu des problèmes de latence consommant d'un sujet si j'ai plusieurs consommateurs avec le même ID de groupe.

Dans cette configuration, ma console consigne systématiquement les problèmes liés au "déclenchement du rééquilibrage". Des rééquilibrages se produisent-ils lorsque j'ajoute de nouveaux consommateurs à un groupe de consommateurs et sont-ils déclenchés afin de déterminer quelle instance de consommateur dans le même ID de groupe obtiendra quelles partitions ou si les rééquilibrages sont utilisés pour autre chose?

Je suis également tombé sur ce passage de https://cwiki.Apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design et je n'arrive pas à comprendre. Donc, si quelqu'un pouvait m'aider à comprendre, cela serait très apprécié:

Le rééquilibrage est le processus par lequel un groupe d'instances de consommateurs (appartenant au même groupe) se coordonne pour posséder un ensemble mutuellement exclusif de partitions de sujets auxquels le groupe est abonné. À la fin d'une opération de rééquilibrage réussie pour un groupe de consommateurs, chaque partition de tous les sujets souscrits appartiendra à une seule instance de consommateur au sein du groupe. Le rééquilibrage fonctionne comme suit. Chaque courtier est élu en tant que coordinateur pour un sous-ensemble des groupes de consommateurs. Le courtier coordinateur d'un groupe est chargé d'orchestrer une opération de rééquilibrage des modifications d'appartenance à un groupe de consommateurs ou des modifications de partition pour les rubriques abonnées. Il est également responsable de la communication de la configuration de propriété de partition résultante à tous les consommateurs du groupe soumis à une opération de rééquilibrage.

38
Jeff Gong

Lorsqu'un nouveau consommateur rejoint un groupe de consommateurs, l'ensemble des consommateurs tente de "rééquilibrer" la charge pour attribuer des partitions à chaque consommateur. Si l'ensemble des consommateurs change alors que cette affectation est en cours, le rééquilibrage échouera et réessayera. Ce paramètre contrôle le nombre maximal de tentatives avant d'abandonner.

la commande pour cela est: rebalance.max.retries et a la valeur 4 par défaut.

cela peut aussi arriver si ce qui suit est vrai:

Délai d'expiration de la session ZooKeeper. Si le consommateur ne parvient pas à consulter ZooKeeper, il est considéré comme mort et un rééquilibrage aura lieu.

J'espère que cela t'aides!

43
George Davis

Une ou plusieurs partitions de sujet sont attribuées exclusivement à chaque consommateur d'un groupe de consommateurs et Rééquilibrage correspond à la réaffectation de la propriété de la partition entre les consommateurs.

A Rééquilibrage se produit lorsque:

  • un consommateur rejoint le groupe
  • un consommateur SHUTS DOWN proprement
  • un consommateur est considéré MORT par le coordinateur du groupe. Cela peut se produire après un blocage ou lorsque le consommateur est occupé par un traitement de longue durée, ce qui signifie qu'aucune pulsation n'a été envoyée dans l'intervalle par le consommateur au coordinateur de groupe dans l'intervalle de session configuré.
  • de nouvelles partitions sont ajoutées


Être un coordinateur de groupe (l'un des courtiers de la grappe) et un chef de groupe (le premier consommateur qui rejoint un groupe) désigné pour un groupe de consommateurs , Rebalance peut être plus ou moins décrit comme suit:

  • le responsable reçoit une liste de tous les consommateurs du groupe de la part de coordinateur de groupe (cela inclut tous les consommateurs qui ont récemment envoyé un battement de coeur et qui sont donc considérés comme vivants) et qui est responsable de l'attribution d'un sous-ensemble de partitions à chaque consommateur.
  • Après avoir décidé de l'affectation de la partition (Kafka possède plusieurs règles d'affectation de partition intégrées), le responsable du groupe envoie la liste des assignations au coordinateur du groupe, qui envoie cette information. à tous les consommateurs.


Ceci s’applique à Kafka 0.9, mais je suis tout à fait sûr que les versions plus récentes sont toujours valables.

27
vortex.alex