【深入浅出flink】第12篇:多图全面剖析flink中的时间语义和Watermark,面试官再也难不倒我了

大家好,我是雷恩Layne,这是《深入浅出flink》系列的第十二篇文章,希望能对您有所收获O(∩_∩)O


一、Flink中的时间语义

流式数据处理最大的特点是数据具有时间属性特征,Flink根据时间产生的位置不同,将时间区分为三种概念:数据生成时间(Event_time)、事件接入时间(Ingestion_time)、事件处理时间(Processing_time),用户可以根据需要选择事件类型作为流式数据的时间属性。

(1)事件时间(Event time)

事件时间是事件创建的时间,这个时间通常在到达Flink之前已经嵌入到生产数据中,因此时间顺序取决于事件产生的地方,和下游的数据处理系统的事件无关。事件时间能够保证正确性,哪怕事件是无序的、延迟的甚至是从持久层的日志或者备份中恢复的,都能保证事件得到正确处理。通常,基于事件时间的Event需要等待水位线(Watermark)的到来触发窗口。

(2)处理时间(Processing time)

处理时间是在执行算子计算过程中获取到的所在主机的时间,也就是具体执行任务的主机的系统时间。基于处理时间的流计算作业在执行时,无需等待水位线的到来触发窗口,所以可以提供较低的延迟。由于处理时间并不是数据真正产生的时间,所以在有些场景下可能会出现问题。

(3)摄入时间(Ingestion time)

摄入时间是数据接入Flink系统的时间,依赖于Source Operator所在主机的系统时钟。

处理时间(Processing time)不依赖Watermark(水位线),Watermark只在基于事件时间和摄入时间这两种时间类型下起作用,更多的是用于事件时间。

二、Watermark(水位线)

2.1 Watermark的由来

我们知道,流处理从事件产生,到流经source,再到operator,中间是有一个过程和时间的,虽然大部分情况下,流到oper

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雷恩Layne

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值