2017-10-13 2 views
2

Ich baue KTable auf einem Eingabethema und ich bin mit KStream auf zwei Kafka Stream-Anwendungsinstanzen verbunden.Kafka Streams KTable-Speicher mit Änderungsprotokoll Thema vs. Protokoll kompaktierten Quellenthema

Das Eingabethema für KTable ist bereits ein Protokoll komprimiert Thema. Wenn also eine meiner Anwendungsinstanzen ausfällt, scheint ein anderer Instanzzustandsspeicher mit dem gesamten Status aktualisiert zu werden, indem aus dem komprimierten Eingangsprotokoll-Thema gelesen wird.

Es ist also nicht notwendig, die Protokollierung (Änderungsprotokoll) für meinen KTable-Speicher zu aktivieren?

Mein kompakter Eintrag in der Quelleingabeprotokolldatei könnte Millionen von Datensätzen enthalten. Wenn ich also die Protokollierung für diesen KTable-Statusspeicher aktiviere, verbessert sich die Aktualisierungszeit des Statusspeichers im Falle eines Fehlers oder hat keine Auswirkungen auf das Quellthema schon verdichtet? Vielen Dank!

Antwort

0

Es ist also nicht notwendig, die Protokollierung (Änderungsprotokoll) für meinen KTable-Speicher zu aktivieren?

Das stimmt. Kafka Streams erstellt kein zusätzliches Changelog-Thema, sondern verwendet das Eingabethema für die Wiederherstellung (es müssen keine Daten dupliziert werden).

so, wenn ich an diesem K-Tabelle Statusspeicher

Wie würden Sie das tun die Protokollierung?

wird es die Aktualisierungszeit meines Statusspeichers im Falle eines Fehlers verbessern, oder wird es keinen Effekt haben, da das Quellthema bereits logarithmisch komprimiert ist?

Im Allgemeinen würden Sie nichts gewinnen. Wie Sie richtig gesagt haben, ist das Eingabethema ohnehin komprimiert, sodass beide Themen ungefähr die gleichen Daten enthalten.

Wenn Sie den Fehler im Laufe der Zeit verringern möchten, sollten Sie StandbyTasks über StreamsConfig Parameter num.standby.replicas konfigurieren (Standard ist 0, also können Sie es auf 1 setzen). Cf https://docs.confluent.io/current/streams/developer-guide.html#state-restoration-during-workload-rebalance

+0

Danke! Bei der Wiederherstellung des Zustandes wurde darauf hingewiesen, dass changelog verwendet wurde, und es war im Dokument nicht klar, ob das Quellthema selbst ausreichend ist. – Balmani

+0

Es ist nicht explizit dokumentiert, da es sich um ein internes Implementierungsdetail/eine Optimierung handelt und Benutzer sich nicht darum kümmern müssen. –