Flink的分布式快照(检查点算法)原理--基于Chandy-Lamport算法

Flink的恢复机制的核心就是应用状态的一致性检查点,有状态流的一致性检查点,其实就是所有状态在某个时间点的一份快照拷贝,而这个时间点应该是所有任务都恰好处理完同一个输入数据。
**

Flink使用的检查点算法是分布式快照算法(基于Chandy-Lamport算法的分布式快照)

**
检查点的两种实现:
(1)检查点算法的简单实现–暂停应用,保存状态到检查点,在重新恢复应用
(2)Flink基于检查点算法的优化实现–基于Chandy-Lamport算法的分布式快照,将检查点的保存和数据分开处理,不需要暂停整个应用,这里引入状态后端的概念。
以下介绍flink的检查点算法:
首先介绍一个概念:Checkpoint Barrier,记住他的作用哦
在这里插入图片描述
图解检查点算法在flink任务流程中的实现原理:
1.两条流使用2个source来读取数据
在这里插入图片描述

2.jobmanager会向每个source任务发送一个带有检查点id的消息,启动检查点(如图中ID=2)
jobmanager启动一个id为2的检查点
3.source将读取的偏移量状态写入检查点id为2的状态后端中,并发送一个barrier(检查点屏障–对应的id也为2);
状态后端保存完成会通知source任务,source任务会向jobmanager确认检查点完成(此处为异步操作)

在这里插入图片描述
4.barrier–id=2会向下游传递,每到达一个分区,该分区中的数据就会被缓存到状态后端中
注:这里是transformation的过程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.直到sink向jobmanager确认状态保存到状态后端完成此次的cp就正式完成了,这就是flink的分布式快照实现。
注:source–transformation–sink是flink的基本架构,如果不明白可以去看一下flink的架构信息。相信理解了flink的架构能够更好地理解他的分布式快照流程。
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值