Quelle est la raison exacte de l'échec du rythme cardiaque du groupe, car il s'agit d'un rééquilibrage? Quelle est la raison du rééquilibrage lorsque tous les consommateurs du groupe sont en hausse?
Je vous remercie.
Les battements cardiaques sont le mécanisme de base pour vérifier si tous les consommateurs sont toujours opérationnels. Si vous obtenez une défaillance de pulsation car le groupe est en cours de rééquilibrage, cela indique que votre instance de consommateur a pris trop de temps pour envoyer la pulsation suivante et a été considérée comme morte et qu'un rééquilibrage a donc été déclenché.
Si vous souhaitez éviter que cela ne se produise, vous pouvez soit augmenter le délai d'expiration (session.timeout.ms
), Soit vous assurer que votre consommateur envoie des battements de cœur plus souvent (heartbeat.interval.ms
). Les battements de cœur sont fondamentalement intégrés dans poll()
, vous devez donc vous assurer d'appeler le sondage assez fréquemment. Cela peut généralement être réalisé en limitant le nombre d'enregistrements qu'un seul sondage renvoie via max.poll.records
(Pour raccourcir le temps nécessaire au traitement de toutes les données récupérées).
Mise à jour
Depuis Kafka 0.10.1, les pulsations sont envoyées dans un thread d'arrière-plan, et non lorsque poll()
est appelée (cf. https: //cwiki.Apache. org/confluence/display/KAFKA/KIP-62% 3A + Allow + consumer + to + send + heartbeats + from + a + background + thread ). Dans cette nouvelle conception, configuration session.timeout.ms
et heartbeat.interval.ms
Sont toujours les mêmes. De plus, il y a max.poll.interval.ms
Qui détermine la fréquence à laquelle poll()
doit être appelée.
Pour plus de détails, cf. Différence entre session.timeout.ms et max.poll.interval.ms pour Kafka 0.10.0.0 et versions ultérieures