2017-10-13 100 views
2

我正在建立KTable的輸入主題,我加入了兩個Kafka流應用程序實例的KStream。Kafka Streams KTable商店與更改日誌主題與日誌壓縮的源主題

KTable的輸入主題已經是日誌壓縮主題。因此,當我的應用程序實例中的一個出現故障時,另一個實例狀態存儲庫似乎通過從輸入日誌壓縮主題中讀取而刷新整個狀態。

因此,不需要爲我的KTable商店啓用日誌記錄(更改日誌)?

我的源輸入日誌壓縮的主題可能有數百萬條記錄,所以如果我在該KTable狀態存儲上啓用日誌記錄,它將改善我的狀態存儲庫刷新時間以防發生故障,或者它不會產生影響,因爲源主題是已經記錄壓縮?謝謝!

回答

0

因此,不需要爲我的KTable商店啓用日誌記錄(更改日誌)?

這是正確的。 Kafka Streams不會創建額外的更改日誌主題,但會使用輸入主題進行恢復(無需重複數據)。

所以如果我啓用日誌記錄上KTable狀態存儲

你會怎麼做呢?

它會改善我的狀態存儲刷新時間在失敗的情況下,或者它不會產生影響,因爲源主題已經是日誌壓縮?

一般來說,你不會得到任何東西。正如你所說的,輸入主題無論如何都是壓縮的,所以這兩個主題將包含大致相同的數據。

如果您想減少失效時間,您應該通過StreamsConfig參數num.standby.replicas(默認爲0,因此您可以將其設置爲1)來配置StandbyTasks。 Cf https://docs.confluent.io/current/streams/developer-guide.html#state-restoration-during-workload-rebalance

+0

謝謝!狀態恢復提到使用更新日誌的abt,並且在文檔中不明確,源主題本身是否足夠。 – Balmani

+0

它沒有明確記錄,因爲它是內部實現細節/優化,用戶不需要擔心。 –