《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.3 任务性能(4) https://developer.aliyun.com/article/1228336
5.3.3.3 CheckPoint失败排查方案
5.3.3.3.1 checkpoint机制
Checkpoint 是一种由 Flink 自动执行的快照,其目的是能够从故障中恢复。
Checkpoints 可以是增量的,当作业出现 failover 的情况下,Flink 会从最近成功的 Checkpoint 恢复任务。
Checkpoint机制:
当 checkpoint coordinator(job manager 的一部分)指示 task manager 开始 checkpoint 时,它会让所有 sources 记录它们的偏移量,并将编号的 checkpoint barriers 插入到它们的流中。这些 barriers 流经 job graph,标注每个checkpoint 前后的流部分。Checkpoint n将包含每个 operator 的 state,这些 state 是对应的 operator 消费了在 checkpoint barrier n之前的所有事件,当 job graph 中的每个 operator 接收到 barriers 时,它就会记录下其状态。拥有两个输入流的 Operators(例如 CoProcessFunction)会执行 barrier 对齐(barrier alignment) 以便当前快照能够包含消费两个输入流 barrier 之前(但不超过)的所有 events 而产生的状态。
Flink 的 state backends 利用写时复制(copy-on-write)机制允许当异步生成旧版本的状态快照时,能够不受影响地继续流处理。只有当快照被持久保存后,这些旧版本的状态才会被当做垃圾回收。整体流程:
•JM trigger checkpoint
•Source 收到 trigger checkpoint 的 PRC,开始做 snapshot,并往下游发送 barrier
•下游接收 barrier(需要 barrier 都到齐才会开始做 checkpoint)
•Task 开始同步阶段 snapshot
•Task 开始异步阶段 snapshot
•Task snapshot 完成,汇报给 JM
《企业级云原生白皮书项目实战》——第五章 大数据——5.3 实时计算Flink版——5.3.3 任务性能(6) https://developer.aliyun.com/article/1228334?groupCode=supportservice