本文我主要整理Flink 时间相关知识,实时计算最大难点:数据乱序,为窗口计算打下基础。
一、三大时间语义详解
1、处理时间
服务器处理数据的系统时间,最简单,无数据顺序要求
2、事件时间
数据本身自带的产生时间,实时业务生产首选
3、摄入时间
数据进入 Flink 程序的时间,极少使用
二、实时业务痛点:数据乱序
网络延迟、设备离线重连导致数据先后顺序错乱,直接影响统计结果准确性。
三、水位线 Watermark 核心作用
水位线是 Flink 内部时间时钟,用于告知 Flink 迟到数据最晚到达时间,解决乱序数据计算异常问题。
四、水位线实战编写代码
1、固定延迟水位线(企业最常用)
2、单调递增水位线
3、自定义水位线生成规则
五、迟到数据处理方案
设置允许迟到时间、侧输出流收集极端迟到数据,保证实时计算结果精准无误。