背景
流处理系统进行数据计算时,数据延迟是不可接受的,但是又不可避免的。出现数据延迟我们需要知道任务延迟的整体分布(哪些算子数据流转出现了延迟)。因此延迟监控在流处理框架中极其重要。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设置为正数 。配置后source会定期发出一个特殊的记录,称为LatencyMarker。标记包含从记录在源处发出时起的时间戳。延迟标记不能超过常规用户记录,因此如果记录在operators前面排队,则会增加标记跟踪的延迟。
在创建LatencyStats之前ÿ