Flink 从一致性检查点中恢复 -14
1.从一致性检查点钟恢复
(1)Flink会周期性地为应用状态生成检查点
(2)一旦发生故障,Flink会利用最新一次检查点将应用恢复到某个一致性的点,并重启处理进程
2.应用恢复步骤
(1)重启整个应用
(2)利用最新的检查点重置任务状态
(3)恢复所有任务的处理
3.精确一次的状态一致性
(1)如果所有算子都将它们全部状态写入检查点并从中恢复,并且所欲输入流的消费位置都能重置到检查点生成那一刻,那么该检查点和恢复机制就能为整个应用提供精确一次的一致性保障
(2)数据源能否重置输入流,取决于它的具体实现以及所有消费外部系统是否提供相关接口
(3)如果数据流是从套接字(socket)消费而来则无法重置,因为套接字会在数据被 取走后将它们丢弃
(4)只有输入流来自可重置的数据源,才能支持精确一次的状态一致性
4.从检查点恢复后
(1)它的内部状态会和生成检查点的时候完全一致
(2)随后应用应用就会重新消费,并处理那些从之前检查点完成开始,到发生故障之间已经处理的数据
(3)部分消息会重复,但是上述机制仍然可以实现精确一次的状态一致性,因为所有算子的状态都会重置到过去没有处理过哪些数据的时间节点
5.总结
(1)Flink的检查点和恢复机制仅能重置流式应用内部的状态
(2)根据应用采用的数据汇算子,在恢复期间,某些结果记录会向下游系统发送多次(如:事件日志系统,文件系统或数据库)
(3)对于有些存储系统,Flink提供的数据汇聚函数支持精确一次输出。如检查点完成后才会把写出的记录正式提交
(4)后面会讲应用一致性保证
评论