在使用持久狀態存儲託管KafkaStream(0.10.2.1)實例的多個節點的部署中,推薦重新啓動所有方法同時避免重播整個狀態存儲變更日誌主題?這必須在不改變application.id的情況下完成,因爲我不想丟失我已經在州商店中擁有的數據。如何以避免從其更改日誌主題重新創建狀態存儲的方式重新啓動KafkaStreams使用者組
我增加了session.timeout.ms,這樣當代理開始重新分配分區時,所有節點都會啓動,並避免調用KafkaStreams.stop來防止不必要的分區重新分配,因爲我在部署期間重新啓動所有節點。
當代理開始重新分配分區時(在所有節點都啓動後),看起來KafkaStreams實例正在重放整個狀態存儲更改日誌主題,而不是從重新啓動之前它們到達的偏移量中取出。
我想,爲了從最新的挑抵消這些條件必須滿足:
1)分區將被分配到含有與其相配套的持久化存儲的實例。
2)KafkaStreams將從changelog主題中的最新偏移量中選取,而不是重播整個更改日誌。
有沒有辦法做到這一點?
我明白,但將分區重新分配給那些KafkaStreams實例管理伴隨狀態店?請注意,StandbyTasks與我重新啓動所有KafkaStreams實例無關。 –
沒有保證,但我們使用「粘性分配」策略,試圖將分區重新分配到其以前的實例。 –