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 が設定されている場合、このプロパティはチェックポイントが書き込まれる頻度を決定します。値は、ミリ秒単位のチェックポイント間の時間です。チェックポイントの頻度は、障害回復に影響します。コンテナが予期せず (クラッシュやマシンの障害などにより) 失敗し、再起動された場合、最後のチェックポイントで処理を再開します。失敗したコンテナーの最後のチェックポイント以降に処理されたメッセージは、再度処理されます。チェックポイントをより頻繁に設定すると、2 回処理される可能性のあるメッセージの数が減りますが、より多くのリソースが使用されます。
task.commit.ms=20000
250ms または 1msに変更できますか。それは良いですか、それとも非常に悪いですか?私は非常に良いクラスターを持っています。
この Samza (ワーカー) は毎週 1 ~ 3 回クラッシュするため、これを変更する必要があるのはなぜですか。そして今、一時的な解決策は毎回オフセットをコミットすることです。
ドキュメント参照: