Checkpoint机制是Flink可靠性的基石,可以保证Flink集群在某个算子因为某些原因(如异常退出)出现故障时,能够将整个应用流图的状态恢复到故障之前的某一个状态,保证应用流图状态的一致性。Flink的Checkpoint机制原理来自"Chandy-Lamport algorithm"算法。
每个需要CheckPoint的应用在启动时,Flink的JobManager为其创建一个CheckpointCoordinator(检查点协调器),CheckpointCoordinator全权负责本应用的快照制作。
- 1.CheckpointCoordinator(检查点协调器)周期性的向流应用的所有source算子发送barrier(屏障)。
- 2.当某个source算子收到一个barrier时,便暂停数据处理过程,然后将自己的当前状态制作成快照,并保存到执行的持久化存储中,最后向CheckpointCoordinatot报告自己快照制作情况,同时向自身所有下游算子广播该barrier,恢复数据处理。
- 3.下游算子收到barrier之后,会暂停自己的数据处理,然后将自身的相关状态制作成快照,并保存到指定的持久化存储中,最后向CheckpointCoordinator报告自身快照情况,同时向自身所有下游算子广播该barrier,恢复数据处理。
- 4.每个算子按照步骤3不断制作快照并向下游广播,直到最后barrier传递到sink算子,快照制作完成。
- 5.当CheckpointCorrdinator收到所有算子的报告之后,认为该周期的快照制作成功;否则,如果规定时间内没有收到算子的报告,则认为本周期快照制作失败。