背景
流处理系统进行数据计算时,数据延迟是不可接受的,但是又不可避免的。出现数据延迟我们需要知道任务延迟的整体分布(哪些算子数据流转出现了延迟)。因此延迟监控在流处理框架中极其重要。Flink作为流处理框架的翘楚,在数据延迟方面也有系统性的方案,本文详细介绍DataStream以及FlinkSQL如何对数据延迟进行监控。
LatencyMarks
与通过水印来标记事件时间的推进进度相似,Flink也用一种特殊的流元素作为延迟的标记,称为LatencyMarker。LatencyMarker在source上以可配置发送间隔,并由任务Task转发。Sink最后接收到LatencyMarks后,将比较LatencyMarker的时间戳与当前系统时间,以确定延迟。LatencyMarker不会增加作业的延迟,但是LatencyMarker与常规记录类似,可以被delay阻塞(例如反压情况),因此LatencyMarker的延迟与Record延迟近似。
metrics.latency.interval 与metrics.latency.granularity
默认情况下Flink是禁用延迟跟踪。要启用延迟跟踪,您必须在ExecutionConfig中将latencyTrackingInterval在Flink设置