web-dev-qa-db-fra.com

La signification de auto.offset.reset et enable.auto.commit dans Kafka n'est pas claire

Je suis nouveau à Kafka, et je ne comprends pas vraiment le sens de la configuration de Kafka, quelqu'un peut-il m'expliquer plus facilement! 

Voici mon code:

 val kafkaParams = Map[String, Object](
  "bootstrap.servers" -> "master:9092,slave1:9092",
  "key.deserializer" -> classOf[StringDeserializer],
  "value.deserializer" -> classOf[StringDeserializer],
  "group.id" -> "GROUP_2017",
  "auto.offset.reset" -> "latest", //earliest or latest
  "enable.auto.commit" -> (true: Java.lang.Boolean)
)

qu'est-ce que cela signifie dans mon code?

4
Gpwner

Je vais vous expliquer le sens, mais je suggère fortement de lire Configuration du site Web de Kafka

"bootstrap.servers" -> "master:9092,slave1:9092"

Essentiellement la configuration du cluster Kafka: IP et Port.

 "key.deserializer" -> classOf[StringDeserializer]
 "value.deserializer" -> classOf[StringDeserializer]

Ce SO réponse explique quel est le but.

"group.id" -> "GROUP_2017"

Un processus consommateur appartiendra à un groupId. Un groupId peut avoir plusieurs consommateurs et Kafka affectera un seul processus de consommateur à une seule partition (pour la consommation de données). Si le nombre de consommateurs est supérieur au nombre de partitions disponibles, certains processus seront inactifs. 

"enable.auto.commit" -> (true: Java.lang.Boolean)

Que ce drapeau soit vrai, Kafka peut alors valider le message que vous avez apporté de Kafka en utilisant Zookeeper pour conserver le dernier "décalage" lu. Cette approche n'est pas la meilleure à utiliser lorsque vous souhaitez une solution plus robuste pour un système de production, car elle ne garantit pas que les enregistrements que vous avez apportés ont été correctement traités (à l'aide de la logique que vous avez écrite dans votre code). Si cet indicateur est faux, Kafka ne saura pas quel est le dernier décalage lu. Ainsi, lorsque vous relancerez le processus, il commencera à lire le décalage "le plus ancien" ou le "dernier" en fonction de la valeur de votre prochain indicateur (auto.offset réinitialiser). Enfin, Cet article de Cloudera explique en détail comment gérer correctement les compensations. 

"auto.offset.reset" -> "latest"

Cet indicateur indique à Kafka par où commencer la lecture des décalages au cas où vous n’auriez pas encore de «commit». En d'autres termes, il commencera soit par le plus tôt, soit par le plus tard, si vous n'avez pas encore persisté de décalage dans Zookeeper (manuellement ou en utilisant le drapeau enable.auto.commit).

5
dbustosp

L'ensemble complet des paramètres de configuration du consommateur est documenté sur le site Web d'Apache Kafka à l'adresse https://kafka.Apache.org/documentation.html#newconsumerconfigs .

1
Hans Jespersen