FLink全链路时延—测量方式
文章目录
一、背景
FLink Job端到端延迟是一个重要的指标,用来衡量FLink任务的整体性能和响应延迟(大部分流式应用,要求低延迟特性)。
通过流处理引擎竞品对比,我们发现大部分流计算引擎产品,都在告警监控页面,集成了全链路时延指标展示(直方图)
一些低延时的处理场景,例如用于登陆、用户下单规则检测,实时预测场景,需要一个可度量的Metric指标,来实时观测、监控集群全链路时延情况。
二、源码分析来源
1、本文的源码分析基于FLink社区issue FLINK-3660,以及issue对应的pr源码pull-2386,另外,个人也新增了实现源码的说明。
2、其pr源码中只涉及到了部分全链路时延实现代码,因此,我在文章中总结了:
- Source到Sink处理Latency Marker源码
- LatencyMarksEmitter 提交时延标记类
- LatencyStats(时延直方图Metric实现)源码
- 时延测量–整体架构图
三、腾讯Oceanus监控指标参考
如下图,红色框线对应的数据延时,即我们描述的指标
四、Flink LatencyMarker实现思路
1、实现方案变迁
在webinterface中,加入流式job的端到端延迟是一个重要特性。因此,FLink社区最初的想法是在每个记录的source上附加一个摄取时间( ingestion -time)时间戳。
然而,这为不使用monitor feature(监控功能)