barrier对齐
一旦 Operator 从 某个输入流 接收到 barrier n,它就 不能 处理来自该流的任何数据记录,直到 从其他所有输入流 接收到 barrier n 为止。
否则,它会混合属于 快照n 的记录和属于 快照n + 1 的记录
步骤一
接收到 barrier n 的流暂时被搁置。从这些流接收的记录 不会被处理,而是放入 输入缓冲区。
如上图,虽然数字流对应的 barrier 已经到达了,但是 barrier 之后的 1、2、3 这些数据只能放到 buffer 中,等待字母流的barrier 到达;
步骤二
一旦最后所有输入流都接收到 barrier n ,对自身进行快照
步骤三
Operator 把 缓冲区中数据发出去
barrier不对齐
barrier不对齐就是指:当还有其他流的 barrier 还没到达时,为了不影响性能,也不用理会,直接处理barrier之后的数据。等到所有流的barrier的都到达后,就可以对该Operator做CheckPoint了;
为什么要对齐?不对齐行不行?
从 kafka 读取数据时,并且 Exactly Once 模式时, 必须 barrier对齐
如果barrier 不对齐 就变成了 At Least Once ;
如果不对齐,从 kafka读取数据时,会发生 重复消费
参考:
https://www.jianshu.com/p/4d31d6cddc99



