Flink源码之1.11新特性Unalignedcheckpoint雀的组词
Flink源码分析系列⽂档⽬录
请点击:Flink 源码分析系列⽂档⽬录
肯佩斯背景
Unaligned Checkpoint是Flink 1.11 新增的功能。在Flink之前的版本,checkpoint的对齐操作会使先收到barrier的input channel后续到来的数据缓存起来,⼀直等到所有的input channel都接收到chechkpoint barrier并且checkpoint操作完毕后,才放开数据进⼊operator。这样虽然保证了exactly-once,但是显著的增加了延迟,降低了性能。如果再遇到数据反压,情况会更加糟糕。米酒可以带上高铁吗
Unaligned Checkpoint的引⼊解决了传统Aligned Checkpoint同时数据⾼反压的场景下,⼀条数据流延迟⾼会影响到另⼀个数据流的问题。Unaligned checkpoint改变了过去checkpoint的逻辑。主要有以下⼏点:
1. 如果有⼀个input channel接收到barrier,开始checkpoint过程,并记录下checkpoint id。秋季
2. 在operator输出缓存头部(最先出缓存的位置)中插⼊⼀个新的checkpoint barrier,⽤于向下游⼴播。
3. 从各个input channel读取数据buffer写⼊到checkpoint,直到读取到checkpoint id为先前记录的id的barrier。(1)中的input channel
由于已经读取到barrier了,它之后的数据不会被记录到checkpoint中。
4. Aligned checkpoint在所有input channel接收到barrier候触发,unaligned checkpoint在任何⼀个input channel接收到第⼀个barrier时
家风家训作文触发。
5. Unaligned checkpoint不会阻塞任何input channel。
以上步骤⽤Flink官⽹的图描述如下:
金融学大学排名
Unaligned Checkpoint
其中黄⾊部分的数据需要写⼊到checkpoint中,包含输⼊端所有channel的checkpoint barrier之后的数据buffer,operator内部的状态和输出端buffer。
关于Checkpoint全过程的分析请参考博客:Flink 源码之快照
今生我要做好人Flink 1.10之前版本的Checkpoint barrier,barrier对齐操作和⾮对齐操作(⽆法保证exactly-once)相关的分析请参考博客:Flink 源码之分布式快照
源代码解析
张继楼