flink面试题

什么是Flink的非barrier对齐,如何实现?

这题设计到flink的容错机制。

首先说一说一致性检查点:在某一个时间点,给source中发送一个检查点事件,这个检查点事件会随着事件处理后像下游发送,当每一个并行度处理到检查点事件的时候,就会将这个事件的的相应结果保存到状态后端。如图所示:

image-20230206130245578

但是当多个并行度进行合并的时候,如上游两个并行度,这两个并行度要将数据进行keyby后分到不同的下游并行度中,这个时候上游的检查点会将数据发送到下游两个检查点中,而下游的每一个并行度会接收到上游的两个检查点。这就涉及到检查点延迟的问题,如图所示:

image-20230206130638073

如图所示,蓝色的检查点事件到达后,黄色检查点没到,这就涉及到了检查点屏障,即Checkpoint Barrier ,需要在蓝色和黄色事件都到达后才可以将数据保存到状态后端中,这叫做检查点对齐

但是检查点对其有确定,就是必须要等到检查点全部到达,如果检查点为全部到达,那么 事件就无法继续处理,如上图中的圆形4就无法处理,需要等待检查点来。如果事件太久不能处理,就会导致消息积压,导致太多数据无法处理,最后空间不足报错。

为了规避风险,Flink 1.11版本中通过FLIP-76引入了非对齐检查点(unaligned checkpoint),结果如图所示:

img

将数据连同算子的状态一起做异步快照。这样需要保存的数据也就变多了,而且当做数据恢复的时候,也会加载到更多的数据,导致恢复时间的增加。

参考文档:Flink新特性之非对齐检查点(unaligned checkpoint)简介

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值