Nehmen wir die in Ordnung :)
1 - Wenn ein Produzent eine Nachricht produziert - Gibt er das Thema an, an das er die Nachricht senden möchte. Ist das richtig? Interessiert es sich für Partitionen?
Standardmäßig kümmert sich der Produzent nicht um die Partitionierung. Sie haben die Möglichkeit, einen benutzerdefinierten Partitionierer zu verwenden, um eine bessere Kontrolle zu erhalten. Dies ist jedoch völlig optional.
2 - Wenn ein Abonnent ausgeführt wird - Gibt er seine Gruppen-ID an, damit er Teil eines Verbraucherclusters desselben Themas oder mehrerer Themen sein kann, an denen diese Verbrauchergruppe interessiert ist?
Ja, Verbraucher schließen sich einer Verbrauchergruppe an (oder erstellen sie, wenn sie alleine sind), um die Last zu teilen. Keine zwei Verbraucher in derselben Gruppe werden jemals dieselbe Nachricht erhalten.
3 - Hat jede Verbrauchergruppe eine entsprechende Partition auf dem Broker oder hat jeder Verbraucher eine?
Weder. Allen Verbrauchern in einer Verbrauchergruppe wird unter zwei Bedingungen eine Reihe von Partitionen zugewiesen: Keine zwei Verbraucher in derselben Gruppe haben eine gemeinsame Partition - und der Verbrauchergruppe als Ganzes wird jede vorhandene Partition zugewiesen.
4 - Sind die vom Broker erstellten Partitionen daher für die Verbraucher kein Problem?
Sie sind es nicht, aber Sie können aus 3 ersehen, dass es völlig nutzlos ist, mehr Konsumenten als vorhandene Partitionen zu haben. Es ist also Ihre maximale Parallelitätsstufe für den Konsum.
5 - Da dies eine Warteschlange mit einem Offset für jede Partition ist, liegt es in der Verantwortung des Verbrauchers, anzugeben, welche Nachrichten er lesen möchte? Muss es seinen Zustand retten?
Ja, Verbraucher sparen einen Offset pro Thema und Partition. Dies wird komplett von Kafka erledigt, keine Sorge.
6 - Was passiert, wenn eine Nachricht aus der Warteschlange gelöscht wird? - Zum Beispiel: Die Aufbewahrung dauerte 3 Stunden, dann vergeht die Zeit. Wie wird der Offset auf beiden Seiten gehandhabt?
Wenn ein Verbraucher jemals einen Offset anfordert, der für eine Partition auf den Brokern nicht verfügbar ist (z. B. aufgrund eines Löschvorgangs), wechselt er in einen Fehlermodus und setzt sich für diese Partition schließlich auf die aktuellste oder älteste verfügbare Nachricht zurück (abhängig von den Konfigurationswert auto.offset.reset) und arbeiten Sie weiter.