Blink学习(一):运行状态管理

Blink是一个非常优秀的流处理任务开发框架,相对于之前的jstorm开发框架,它最显著的特点是具备非常完备的状态管理体系,解决了流处理任务中让人非常头疼的“保证EXACTLY ONCE的错误断点恢复”问题。下面着重梳理下blink是如何进行状态管理的。

1 Checkpoint Barrier

在这里插入图片描述
在处理数据流时,定期插入checkpoint barrier,当一个计算节点收到checkpoint barrier时,就会将储存当时所有的运行状态。假设系统在处理barrier n和barrier n+1中间的某一条消息时发生了问题,blink就会将所有节点恢复至barrier n时的状态,并且将消息回调至barrier n重新计算。
blink记录系统状态有两种方式:当需要维护的状态量较小时,每个节点自行存储自身的状态即可;当需要维护的状态量较大时,需要一个具备分布式一致性的存储来实现状态的储存。blink原生支持的数据库是RocksDB。

2 Event Time

Event Time指的是事件发生时刻,与之对应的是Processing Time(系统处理事件的时刻)。下面介绍下Event Time的重要性。

  • 在批处理任务时,假设我们希望对时间区间[a,b]内的数据进行聚合计算。由于从事件发生到系统接收到时间的过程中有很多不确定因素,若使用Processing Time,我们将无法精确的定义我们的计算,只能使用Event Time
  • 当系统发生错误导致状态回滚后,同一个事件将会多次进入到系统中,此时若使用Processing Time,将导致系统无法判定当前处理的事件是“回滚事件”还是“新事件”

3 Watermarks

在这里插入图片描述

在批处理任务中,系统需要明确的知道是否已经接收到一个批次中的所有事件。blink使用watermarks来标示这一状态。一个带有时间戳t的watermarks会让计算节点判定不会再收到任何时间戳小于t的事件,若此时t已经满足批处理开始条件,则计算节点会开始运算批运算。
在实践中,一般延迟一定时间发送带有时间戳t的watermarks,以此来尽可能保证计算节点开始进行批运算时所有事件都已被接收。

4 Savepoint

Savepoint可以理解为人为插入的checkpoint,会触发blink进行状态储存,开发人员可以指定恢复到某一个Savepoint来调试系统。

如果感兴趣,欢迎关注微信技术公众号
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值