如何理解Flink的Exactly-Once语义

1. 什么是Exactly-Once:

   从字面上来说,就是确切一次,也就是保证消息只被消费一次(即使消费了多次,最终呈现出来的结果也要跟只消费一次一样)。

2. 

3.CheckPoint

Checkpoint是Flink实现容错机制最核心的功能,它能够根据配置周期性地基于Stream中各个Operator/task的状态来生成快照,从而将这些状态数据定期持久化存储下来,当Flink程序一旦意外崩溃时,重新运行程序时可以有选择地从这些快照进行恢复,从而修正因为故障带来的程序数据异常。

4 Checkpoint Barrier

单流的 CheckPoint barrier:

1: 屏障作为数据流的一部分随着记录被注入到数据流中。屏障永远不会赶超通常的流记录,它会严格遵循顺序。

2: 屏障将数据流中的记录隔离成一系列的记录集合,并将一些集合中的数据加入到当前的快照中,而另一些数据加入到下一个快照中。

3: 每一个屏障携带着快照的ID,快照记录着ID并且将其放在快照数据的前面。

4: 屏障不会中断流处理,因此非常轻量级。

并行CheckPoint Barrier

1:不止一个输入流的时的operator,需要在快照屏障上对齐(align)输入流,才会发射出去。

2:可以看到1,2,3会一直放在Input buffer,直到另一个输入流的快照到达Operator。

5. 两段提交实现exactly-once

当checkPoint barrier 流到某个operator时,operator就将此时的状态快照保存到StateBackend.当所有的operator保存了快照,并对结果进行预提交。之后JobManager需要通知所有的operator checkpoint已经创建完成,然后提交事物。

一文搞懂Flink内部的Exactly Once和At Least

Apache Flink 结合 Kafka 构建端到端的 Exactly-Once 处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值