繁体   English   中英

我可以将task.commit.ms设置为每1ms吗?

[英]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次。 现在,临时解决方案是每次提交偏移量。


参考文献:

阿帕奇-萨姆扎

Apache-Samza配置

我知道我的解决方案不是所有问题的解决方案。 task.commit.ms更改为task.shutdown.ms=5000的相同内容。

Atlas-Samza配置关闭

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM