Apache flink 如何正确理解Flink中的检查点

Apache flink 如何正确理解Flink中的检查点,apache-flink,flink-streaming,fault-tolerance,checkpoint,Apache Flink,Flink Streaming,Fault Tolerance,Checkpoint,我知道Flink使用检查点机制来保证一次。但我想知道更多的细节 如果我是对的,每个操作员都有自己的检查点。我不明白这些检查站是如何协同工作的 我有两个源任务A和B,还有一个操作符C。A和B是C的输入 似乎C必须同时等待A的检查点和B的检查点。但是我们如何确定它们的间隔呢?如果C的操作符这样做:output=a1+a2+a3-b1,这是否意味着我们应该将B的检查点的间隔设置为A的检查点的三倍 总之,我的问题是,我们是否应该根据每个操作员的工作和输入频率对其检查点间隔进行一些设计,以避免长时间等待检

我知道Flink使用检查点机制来保证一次。但我想知道更多的细节

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

我有两个源任务A和B,还有一个操作符C。A和B是C的输入

似乎C必须同时等待A的检查点和B的检查点。但是我们如何确定它们的间隔呢?如果C的操作符这样做:
output=a1+a2+a3-b1
,这是否意味着我们应该将B的检查点的间隔设置为A的检查点的三倍


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

我不确定是否遵循您的问题。您可以为整个作业设置检查点间隔,而不是基于每个操作员。这决定了检查点屏障将在源处注入流的时间间隔。然后它与常规事件通过相同的通道。在收到检查点屏障后,单个操作员检查其与特定检查点对应的状态(每个检查点屏障包含检查点id)。这样,整个作业可以对流中该点的所有操作员进行一致的快照


如果你想更透彻地解释它到底是如何工作的,请看这里:

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

如果您想更透彻地解释它到底是如何工作的,请查看以下内容: