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.
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. –
> 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
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: –