Flink检查点的实现算法

检查点分界线

  • FLink的检查点算法用到了一种称为分界线(barrier)的特殊数据形式, 用来把一条流上数据按照不同的检查点分开
  • 分界线之前到来的数据导致的状态更改, 都会被包含在当前分界线所属的检查点中; 而基于分界线之后的数据导致的所有更改, 就会被包含在之后的检查点中

检查点运行过程

1, JobManager会向每个source任务发送一条带有新检查点ID的消息, 通过这种方式来启动检查点
(比如有两个source现在source-1处理到2了, source-2处理到3了, 这个时候source接收到检查点消息就是source-1中的数据2以前的数据包括2, source-2中的3以前的数据包括3在上一个检查点和这次barrier之间)
2, 数据源将它们的状态写入检查点, 并发出一个检查点barrier
3, 状态后端在状态存入检查点之后, 会返回通知给source任务, source任务就会向JobManager确认检查点完成, 英文是Acknowledge completion of task checkpoint 2 (这只是source的确认检查点)
4, 分界线对齐: barrier向下游传递, 如果下游有另外一个算子, 比如sum, 那么sum任务会等待所有输入分区的barrier到达, 这个是考虑可能有keyby等分区操作, 所以要等所有分区
5, 对于barrier已经到达的分区, 继续到达的数据会被缓存, 而barrier尚未到达的分区, 数据会被正常处理
6, 当收到所有输入分区的barrier时, 任务就将其状态保存到状态后端的检查点中, 然后同样确认检查点完成, 然后将barrier继续向下游转发
7, 向下游转发检查点barrier后, 任务继续正常地数据处理
8, 当最后所有任务都确认已成功将状态保存到检查点时, 检查点就真正完成了, 并且此时检查点也保存着每个任务地state
其实就是把每个任务在检查点这一时刻对应地state拼成一整个状态拼图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值