计算引擎-Flink
参考:https://mp.weixin.qq.com/s/RUS9w-bGan6fDcF9CVqvFw
checkpoint
1.Checkpoint Coordinator 向所有 source 节点 trigger Checkpoint. 然后Source Task会在数据流中安插CheckPoint barrier
Job Manager 对每一个job都会产生一个Checkpoint Coordinator 向所有 source 节点 触发 trigger Checkpoint节点, 并行度是几,就会触发多少个。source 会向流中触发Barrier,接收到Barrier的节点就会保存快照(包括source)。
2.source 节点向下游广播 barrier,这个 barrier 就是实现 Chandy-Lamport 分布式快照算法的核心, 下游的 task 只有收到所有进来的 barrier 才会执行相应的 Checkpoint(barrier对齐) 注意:新版本有一种新非对齐barrier
3.source先收到barrier,然后往后传递,若是多并行度,相当于多组接力赛跑比赛,所以顺序是不一致的,并不是同步。
4.下游的 sink 节点收集齐上游两个 input 的 barrier 之后,会执行本地快照。
5.同样的,sink 节点在完成自己的 Checkpoint 之后,会将 state handle 返回通知 Coordinator。
6.最后,当 Checkpoint coordinator 收集齐所有 task 的 state handle,就认为这一次的 Checkpoint 全局完成了,向持久化存储中再备份一个 Checkpoint meta 文件。