我正在使用Apache Flink设置一个分析管道来处理物联网数据流。在尝试配置系统时,我似乎找不到任何关于应该多久启动一次检查点的来源?是否有任何建议或硬性经验法则?例如 1 秒、10 秒、1 分钟等?
编辑:另外,有没有办法在运行时以编程方式配置检查点间隔?
这取决于两件事:
如果- 发生故障,您愿意重新处理多少数据(作业将从上次完成的检查点重新启动(?
- 由于数据传输限制和检查点本身的持续时间,您多久可以检查一次?
根据我的经验,大多数用户使用10秒左右的检查点间隔,但也配置了"检查点之间的分钟暂停"[1]。
[1] https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/stream/state/checkpointing.html#enabling-and-configuring-checkpointing
除了已经提到的内容之外,还有一件事需要考虑:如果您依赖于事务接收器来获得恰好一次的语义,那么这些事务将作为完成每个检查点的一部分提交。这意味着这些事务的任何下游使用者都将遇到延迟,延迟或多或少由作业的检查点间隔决定。