2016-06-14 26 views
6

haben wir einen Kafka/Zookeeper Cluster bestehend aus 3 Brokern eingerichtet. Wir haben einen Produzenten, der Nachrichten an ein bestimmtes Kafka-Thema sendet und einige Verbrauchergruppen, die von diesem Thema lesen. Diese Konsumenten führen eine Führerwahl über den Zookeeper für sich durch (unabhängig von Kafka).Was passiert, wenn der Zoowärter komplett ausfällt?

Die Versionen verwendet werden:

  • Kafka: 0.9.0.1
  • Zookeeper: 3.4.6 (in der Kafka-Paket enthalten)

Alle Prozesse von Betreuer verwaltet werden. Bis jetzt funktioniert alles gut. Was wir jetzt (zu Testzwecken) versuchten, war, einfach alle Zookeeper-Prozesse zu beenden und zu sehen, was passiert.

Wie wir erwartet hatten, konnten unsere Verbraucherprozesse keine Verbindung mehr zum Zookeeper herstellen. Aber unerwartet arbeiteten die Kafka-Makler noch. Unser Produzent hat sich überhaupt nicht beschwert und konnte trotzdem in das Thema schreiben. Obwohl ich kafka/bin/kafka-topics.sh o.ä. nicht verwenden konnte, da sie alle einen zookeeper-Parameter benötigen, konnte ich immer noch die tatsächliche Größe des Themalogs sehen. Nach dem Neustart der Tierpfleger-Prozesse funktionierte alles wieder wie zuvor.

Was wir nicht herausfinden konnten ist jetzt ... was ist dort eigentlich passiert? Wir dachten, Kafka würde eine funktionierende Zookeeper-Connection benötigen und wir konnten online keine Erklärung für dieses Verhalten finden.

+0

Zookeeper ist nicht für alle von Kafka durchgeführten Operationen erforderlich. Zum Beispiel geben Kakfa Consumer Clients ihre Offsets an ZK ab. Soweit ich weiß. ZK wird auch verwendet, wenn ein Broker keine neuen Leiter für die Partition auswählt, die der fehlgeschlagene Broker gehostet hat. Solange jedoch alle Broker arbeiten, ist Schreiben kein Problem: Siehe https://kafka.apache.org/090/documentation.html#replication und http://www.confluent.io/blog/hands Frei-Kafka-Replikation-eine-Lektion-in-Operational-Einfachheit/für bloße Details. –

+1

> Kakfa Consumer Clients geben ihre Offsets an ZK ab. Tun sie? Soweit ich das verstanden habe, braucht der "Neue Verbraucher" das nicht, da er Verbraucher vom Zookeeper entkoppeln wollte. Deshalb verwenden Sie die Eigenschaft bootstrap.servers statt zoekeeper.connect und verwenden Sie die Kafka-Ports – tehK

+1

Ja. Altkonsum wird in ZK verrechnet. Die neuen Konsumenten legen ihre Offsets in ein Kafka-Thema und sind unabhängig von ZK. Server-Ausfallerkennung, Datenpartitionierung und In-Sync-Daten-Replikation: –

Antwort

0

Wenn Sie einen Knoten des Tierpflegers haben, wird der Broker nicht in der Lage sein, den Tierpfleger zu kontaktieren. Nachdem der Broker entdeckt hat, dass Tierpfleger nicht erreichbar ist, wird der Makler ebenfalls unerreichbar. Daher der Produzent und der Konsument. Im Falle eines Produzenten beginnt es zu fallen (lehne den Datensatz ab). Im Falle eines Verbrauchers kann es vorkommen, dass der gelesene Datensatz, der nicht bestätigt wird, am Ende erneut verarbeitet wird, wenn der Broker bereit ist.

Im Falle von 3node zk ist der Ausfall eines Knotens akzeptabel, da das Quorum immer noch besteht zufrieden ... aber leisten können die 2 Knoten Fehler, die zu den oben genannten Folgen führen werden ...