1
通过上期的分享,我们对 Metrics 类库有了较深入的认识,并对指标监控的几个度量类型了如指掌。
本期,我们将走进当下最火的流式处理框架 flink 的源码,一同深入并学习一下别人家的代码。
2
会当凌绝顶,一览众山小。先从全局了解个梗概,然后再采用剥洋葱的方式逐层去解密。
我本地的源码是 flink-1.8.1 版本,打开源码,进入 flink-metrics 模块,发现很多以 flink-metrics-开头的系列模块。
映入眼帘的 flink-metrics 系列模块虽然很多,不用发愁。其实主要分为指标监控基础核心模块(flink-metrics-core),以及指标数据监控组件集成模块(flink-metrics-xxx)两大类。
2.1
flink-metrics-core 模块剖析。
开篇提到 Metrics 的几种度量类型,来看看 flink 是咋定义的?
打开指标监控基础核心模块 flink-metrics-core 看个梗概。
不出我们所料,flink 定义了 Metrics 监控中常见的几种度量规范(Meter、Gauge、Counter、Histogram),画个简易的类图再看的明白些。
不过为了便于管理和区分 Metric,于是就有了 MetricGroup 的定义,那么编码时可以直接与 MetricGroup 交互就可以啦。
到这,了解了全局,不妨采用剥洋葱的方式,再去看看每个接口定义的都是啥规范?逐一进行解密。
Meter 定义 getRate() 方法,用于统计系统中某一个事件的速率,定义 getCount() 方法,用于系统中事件的计数统计。