Flink中的事件时间、处理时间和摄入时间
本文重点
时间在Flink中是非常重要的概念,我们前面学习的10分钟温度统计就是基于时间来完成的。温湿度设备上报数据会有时间,同时窗口大小是根据时间来进行计量的,接下来我们就深入了解一下 Flink 中的时间语义。
Flink面对时间的问题
问题一:
FLink是一个分布式的框架,想要拥有一个全局统一的时钟,在分布式系统里是做不到的,所以节点和节点之间如何才能保持时间的统一?如果不能统一就会出现这样的问题,由于节点A的时间比较快,现在它的时间窗口已经到了[11,20),但是节点B的时间窗口比较慢,它的时间窗口才为[0,10)窗口,那么此时来了一条数据,到A节点就是[11,20)窗口,到B节点就是[0,10)窗口,此时就无法实现精确一次(exactly once)”的状态一致性。
问题二:
网络传输是需要消耗时间的,比如温度设备在9分钟的时候上报了温度,但是网络很慢,在11分钟的时候才到了Flink节点,那么这个数据应该是在[0,10)窗口还是在[11,20)窗口呢?
处理时间和事件时间
一个是数据产生的时间,我们把它叫作“事件时间”(Event Time);另一个是数据真正被处理的时刻,叫作“处理时间”(Processing Time)。由于网络传输等原因,处理时间往往是比