[英]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.