Wie weit ist dein Kafka-Konsument zurück? - Wie Man

Wie weit ist dein Kafka-Konsument zurück?

Kafka ist ein verteiltes Messaging-System mit hohem Durchsatz. Im Wesentlichen werden Themenpartitionen kontinuierlich angefügt, und die Benutzer dieser Themen lesen daraus, indem sie ihre "Offsets" nachverfolgen, d. H. In den Nachrichtenstrom, auf den sie zeigen. Diese Offsets sind dem Zoowärter verpflichtet, der diese speichert und verwaltet, so dass jeder Verbraucher weiß, wo er sich gerade befindet. Der entscheidende Vorteil dieser Art von Messaging ist, dass Sie, wenn Sie Nachrichten rückgängig machen und erneut lesen möchten, einfach den Versatz ändern und auf eine frühere Position im Stream "zeigen" können.

In einigen Fällen müssen Sie möglicherweise wissen, ob Ihr Consumer Nachrichten mindestens so schnell konsumieren kann, wie Nachrichten zum Zweig hinzugefügt werden.

Es gibt eine wirklich nette Möglichkeit, die Offsets in Kafka für einen bestimmten Verbraucher zu überprüfen und zu sehen, wie weit Sie hinterherhinken und ob Sie aufholen können.

Das Tool heißt ConsumerOffsetChecker. Es kommt mit kafka aus der Box, hat aber kein Shell-Skript, deshalb müssen Sie es mit dem Skript kafka-run-class.sh im Verzeichnis kafka bin ausführen.

Führen Sie im Kafka-Stammverzeichnis Folgendes aus:

bin / kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --group --zkconnect --topic

woher:

• ist das Pseudonym, das Ihr Verbraucher verwendet, um eine Verbindung zu Kafka herzustellen
• sind die Verbindungsdetails für Ihren Zookeeper-Server
• ist der Name des Kafka-Themas

Auf diese Weise können Sie eine Verbindung zu zookeeper herstellen und verschiedene Informationen zu Offsets für diesen Verbraucher und dieses Thema anzeigen. Beispielergebnisse für die Ausführung (mit Konsumentengruppen "Signaturen" und "Ingest" -Thema) sind:

Gruppenthema Pid Offset logSize Lag Besitzer
Unterschriften aufnehmen 0 5158355 6655120 1496765 keine
Unterschriften 1 5111118 6604278 1493160 keine
Unterschriften 2 5080952 6571573 1490621 keine
Unterschriften 3 5055358 6543351 1487993 keine

Die PID stellt die Partitions-ID dar. Im obigen Fall können wir die Informationen für jede der 4 Partitionen 0 bis 3 sehen.

Der Offset gibt an, welcher Offset derzeit in Zookeeper für diesen Verbraucher gespeichert ist.

Die Verzögerung sagt Ihnen, was der Unterschied zwischen diesem Versatz und der neuesten Nachricht zum Thema ist.

Sie können diese verwenden, um zu überprüfen, ob Ihr Verbraucher Nachrichten schneller konsumiert, als sie in der Warteschlange erscheinen, und um alle Bedenken zu zerstreuen, die Sie möglicherweise nicht nachholen.

Beachten Sie, dass der Verbraucher nach einem bestimmten Intervall (standardmäßig 10 Sekunden) seinen Versatz an zookeeper übergibt. Wenn Sie diesen Befehl einige Male hintereinander ausführen, wird der Versatz wahrscheinlich konstant bleiben, während die Verzögerung zunimmt, bis ein Commit ausgeführt wird Der Verbraucher wird den Offset plötzlich nach oben bringen und damit in einem Durchgang deutlich nachgeben. Als wir dies benutzten, hatten wir Angst, dass wir immer weiter zurückgingen, bis uns die Verzögerung der Kommerzialisierung des Versatzes zum Tierpfleger bewusst wurde.

Der Zeitraum für Consumer Offsets kann in der Consumer-Konfiguration mit der Eigenschaft "autocommit.interval.ms" konfiguriert werden. Der Standardwert ist 10000 ms (10 Sekunden). Es ist eine Designentscheidung zu treffen, in der Sie festlegen möchten, was Sie als ... festgelegt haben. Wenn Sie zu lange einstellen, müssen Sie möglicherweise eine große Anzahl von Nachrichten erneut abspielen. Wenn Sie es zu kurz einstellen, werden Sie den Zookeeper mit konstanten Commits überladen.