Flink流处理过程的部分原理分析

本文介绍了Flink流处理的原理,包括时间有序性保证通过watermark实现数据重排序,窗口序列对齐确保处理顺序,以及流数据的容错机制——Checkpoint,详细讲解了Barriers在状态保存和错误恢复中的作用,以及状态的异步同步和增量checkpoint策略。
摘要由CSDN通过智能技术生成

前言


在分布式领域,计算和存储一直是两大子领域。很多分布式理念在计算和存储的实现中会有着完全不同的逻辑,比如我们快照,计算框架中的快照和我们平常说的存储快照实现不同点在于哪里呢?笔者做为一个研究存储模块出身的人,最近在研读Flink流处理的部分原理,小小作番总结。很多时候,以存储的眼光来看待计算过程中的处理过程,还是有很多不一样的地方的。下文中,笔者将逐一介绍Flink流处理的一些过程分析。额外说明一点,以下内容来源于早期Flink内部设计文档,可能与现今使用的Flink有所差异,详细来源可见文末引用地址。

流的时间有序性保证


在上一篇阐述Flink窗口处理的文章中,笔者提到了关于网络传输等外部因素造成的流数据的潜在乱序问题,也就是一些“迟到“了的数据。对于这种情况,Flink在内部提供了一种有序数据流的概念,当然这个有序流是一种被二次加工过的数据流,从而保证了其有序性。那么问题来了,这种数据流是进行了何种处理方式呢?

用一句简单地话来说:通过watermark对数据重排序,来保证整体数据流的有序性

而这里分段数据的重排序,依靠的是数据流的watermark值。每当我们每接收到一份数据到buffer中时,我们选定其中最新的watermark值,对buffer里数据的时间小于此watermark值的数据在buffer中做一个排序。然后将此排序好的数据发向下游。这里基于的一个原则是:时间比当前watermark消息早的数据都已经到来了,所以我们可以大胆地把这批数据先拍好序再发出去。图示效果如下࿱

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值