flink什么时候会认为检查点完成?在接收器功能之前还是之后?

when will flink consider a checkpoint complete? before or after the sink function?

flink 什么时候会认为检查点完成? 有两种方式:

  1. 一旦所有 sink 函数都收到检查屏障 N,flink 就会认为检查点 N 已完成。
  2. 当所有 sink 函数都成功处理了屏障 N 时,flink 将认为检查点 N 完成。

哪个是真的?因为我可以找到关于此的任何文档。

一旦所有任务(包括接收器)都向检查点协调器报告它们已完成写出其状态快照,检查点协调器将写入检查点元数据,然后通知所有参与者检查点完成。所以#2 是正确的——直到接收器函数处理完屏障之后,检查点才算完成。

对于进行两阶段提交的接收器,整个过程要复杂一些。详情请参阅 https://flink.apache.org/features/2018/03/01/end-to-end-exactly-once-apache-flink.html