2016-10-13 2 views
1

Der Versuch, die Formulierung aus der kafka-Dokumentation zu verstehen, wie der Verbraucher Zugang zu der Nachricht erhält.Kafka-Verbraucherverhalten

http://kafka.apache.org/documentation.html#intro_consumers http://kafka.apache.org/documentation.html#theconsumer

Von dem, was ich verstehe, wenn es mehr als ein Verbraucher mit der gleichen Verbrauchergruppe Nachricht ist, wird mit einer Gruppe genau einem Verbraucher geliefert werden. Meine Frage hier ist auf den Liefer-Mechanismus in der Zeile bezeichnet ist PUSH oder PULL? Wenn es PUSH ist, was als geliefert gilt (Semantikübergabe). Wenn es ein Pull ist, wie stellt Kafka sicher, dass jede Nachricht von nur einem Verbraucher gelesen wird (Synchronisation zwischen den Konsumenten)? Vielen Dank!

+0

Es sagt „vom Broker durch den Verbraucher gezogen“. Es ist also definitiv ein PULL. – mfirry

+0

Ja, das ist der Eindruck, den ich bekommen habe, aber ich wollte es überprüfen. Kennen Sie die Antwort für den anderen Teil der Frage? – useful

+0

Beim Durchlesen heißt es: "Verbraucher bezeichnen sich selbst mit einem Verbrauchergruppennamen, und jeder zu einem Thema veröffentlichte Datensatz wird an eine Verbraucherinstanz innerhalb jeder teilnehmenden Verbrauchergruppe übermittelt. (...) Wenn alle Verbraucherinstanzen dieselbe Verbrauchergruppe haben, dann werden die Datensätze effektiv über die Verbraucherinstanzen ausgeglichen. Wenn alle Verbraucherinstanzen unterschiedliche Verbrauchergruppen haben, wird jeder Datensatz an alle Verbraucherprozesse gesendet. " Nicht sicher, dass es Ihre Zweifel beantwortet. – mfirry

Antwort

0

Wenn es ein Pull ist Wie stellt Kafka sicher, dass jede Nachricht von nur einem Verbraucher gelesen wird?

Es hängt davon ab, was Sie mit "Kafka" meinen. Broker überprüft nichts, weil es ein Pull Modell ist (dh, ein Broker liefert die Daten, die ein Verbraucher anfordert, und kümmert sich nicht um irgendetwas anderes).

Daher ist es die Verantwortung der Verbraucher, die Arbeit zu teilen. Zum Beispiel unter Verwendung von KafkaConsumer sprechen alle Verbraucherinstanzen über das "Gruppenverwaltungsprotokoll" miteinander (dieses Protokoll wird von den Brokern angeboten; andere Nicht-Java-Clients bieten auch Gruppenverwaltungsfunktionen an). Dadurch können die Instanzen entscheiden, welche die Partitionierungsthemen verarbeitet haben. Somit ist jede Partition genau einem Verbraucher zugeordnet. Es ist im Grunde genommen ein "Vertrag": Consumer-Instanzen sprechen miteinander, und jeder Verbraucher verspricht, nur Daten von den ihm zugewiesenen Partitionen zu konsumieren.

Wenn Sie mehr wissen möchten, finden Sie in der Kafka wiki: https://cwiki.apache.org/confluence/display/KAFKA/Kafka+0.9+Consumer+Rewrite+Design