如何正确理解Flink中的checkpoint

How to understand checkpoint in Flink correctly

我知道Flink使用checkpoint机制来保证Exactly-once。但我想知道更多细节。

如果我是对的,每个操作员都有自己的检查点。我不明白这些检查点是如何协同工作的。

说我有两个源任务A和B,一个算子C。A和B是C的输入。

好像C必须等待A的检查点和B的检查点。但是我们如何确定它们的时间间隔呢?如果C的operator是这样做的:output = a1 + a2 + a3 - b1,是不是说我们要把B的checkpoint的间隔设置为A的checkpoint的三倍?

总而言之,我的问题是是否应该根据每个操作员的工作和输入频率对每个操作员的检查点间隔进行一些设计,以避免长时间等待检查点的问题?

我不确定我是否理解了你的问题。您为整个作业设置检查点间隔,而不是在每个操作员的基础上。这决定了检查点屏障将在源头注入流的时间间隔。然后它遍历与常规事件相同的通道。收到检查点屏障后,单个操作员检查其对应于该特定检查点的状态(每个检查点屏障包含检查点 ID)。这样整个作业就可以在流中的那个点拍摄所有操作员的一致快照。

如果你想要更详尽的解释它是如何工作的,请看这里:Data Streaming Fault Tolerance