[英]Can I set task.commit.ms to every 1ms?
我有一個Apache-Samza項目,重復數據有問題。
這是我的檢查點配置:
task.checkpoint.factory=org.apache.samza.checkpoint.kafka.KafkaCheckpointManagerFactory
task.checkpoint.system=kafka
task.checkpoint.replication.factor=2
task.commit.ms=20000
在文檔上,我們可以閱讀以下內容:
如果配置了task.checkpoint.factory,則此屬性確定編寫檢查點的頻率。 該值是檢查點之間的時間,以毫秒為單位。 檢查點的頻率會影響故障恢復:如果容器意外失敗(例如,由於崩潰或機器故障)並重新啟動,它將在最后一個檢查點恢復處理。 自失敗容器上的最后一個檢查點以來處理的所有消息都將再次處理。 更加頻繁地執行檢查點操作可以減少可能被處理兩次的消息數量,但同時也會占用更多資源。
所以我可以將task.commit.ms=20000
更改為250ms或1ms。 是好是壞? 我有一個很好的群集。
為什么我需要更改此設置,因為這個Samza(工人)每周崩潰1-3次。 現在,臨時解決方案是每次提交偏移量。
參考文獻:
我知道我的解決方案不是所有問題的解決方案。 將task.commit.ms
更改為task.shutdown.ms=5000
的相同內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.