
导读:网易云信作为一个 PaaS 服务,需要对线上业务进行实时监控,实时感知服务的“心跳”、“脉搏”、“血压”等健康状况。通过采集服务拿到 SDK、服务器等端的心跳埋点日志,是一个非常庞大且杂乱无序的数据集,而如何才能有效利用这些数据?服务监控平台要做的事情就是对海量数据进行实时分析,聚合出表征服务的“心跳”、“脉搏”、“血压”的核心指标,并将其直观的展示给相关同学。这其中核心的能力便是 :实时分析和实时聚合。
文|圣少友 网易云信数据平台资深开发工程师
在之前的《网易云信服务监控平台实践》一文中,我们围绕数据采集、数据处理、监控告警、数据应用 4 个环节,介绍了网易云信服务监控平台的整体框架。本文是对网易云信在聚合指标计算逻辑上的进一步详述。
基于明细数据集进行实时聚合,生产一个聚合指标,业界常用的实现方式是 Spark Streaming、Flink SQL / Stream API。不论是何种方式,我们都需要通过写代码来指定数据来源、数据清洗逻辑、聚合维度、聚合窗口大小、聚合算子等。如此繁杂的逻辑和代码,无论是开发、测试,还是后续任务的维护,都需要投入大量的人力/物力成本。而我们程序员要做的便是化繁为简、实现大巧不工。
本文将阐述网易云信是如何基于 Flink 的 Stream API,实现一套通用的聚合指标计算框架。
整体架构

如上图所示,是我们基于 Flink 自研的聚合指标完整加工链路,其中涉及到的模块包括:
-
source:定期加载聚合规则,并根据聚合规则按需创建 Kafka 的 Consumer,并持续消费数据。
-
process:包括分组逻辑、窗口逻辑、聚合逻辑、环比计算逻辑等。从图中可以看到,我们在聚合阶段分成了两个,这样做的目的是什么?其中的好处是什么呢?做过分布式和并发计算的,都会遇到一个共同的敌人:数据倾斜

本文介绍网易云信如何基于Flink StreamAPI构建实时聚合指标计算框架,解决大规模数据处理中的数据倾斜问题,实现高效、易维护的服务监控平台。
最低0.47元/天 解锁文章
62

被折叠的 条评论
为什么被折叠?



