执行流程
创建 CheckpointCoordinator
当flink程序 设置 checkpoint 开启(默认不开启),在程序启动时,JobManager 为其创建一个 CheckpointCoordinator (Checkpoint协调器)
第一步
CheckpointCoordinator周期性的向所有 source 算子发送barrier(栅栏)
第二步
- 当某个
source算子收到一个barrier时,会 暂停自己数据处理 - 然后将自己的 当前状态制作成快照,并 保存到指定的持久化存储中
- 向
CheckpointCoordinator报告结果 - 向所有下游算子 广播 该
barrier source算子恢复数据处理
第三步
过程同第二步
- 下游算子收到barrier之后,会 暂停自己的数据处理
- 然后将自身的 相关状态制作成快照,并 保存到指定的持久化存储中
- 向
CheckpointCoordinator报告结果 - 向所有下游算子广播该
barrier - 当前算子恢复数据处理
第四步
- barrier传递到sink算子,完成快照
- 当
CheckpointCoordinator收到所有算子的报告之后,认为该周期的快照制作成功; - 如果在 规定的时间内 没有收到所有算子的报告,则认为本周期快照制作 失败 ;
参考:
https://www.jianshu.com/p/4d31d6cddc99



