基于Flink的实时数仓设计及DPI业务应用

2022-05-27 17:03吴小芳
计算机时代 2022年5期

摘  要: 在大数据时代,数字化转型是企业发展战略的必然选择,而实时数仓建设则是数字化转型的重点。实时计算相对于传统的批处理,能够快速体现数据的价值,有着广泛的实时业务场景需求。本文提出一种基于Flink的实时数仓设计,并在DPI业务场景得到实践验证,有效支撑了运营商对业务请求次数、流量、活跃用户数、业务成功率等多维度指标需求,可为其他更广泛的实时业务场景落地奠定坚实的基础。

关键词: 流式计算; Flink; 实时数仓; DPI

中图分类号:TP311          文献标识码:A     文章编号:1006-8228(2022)05-56-04

Design of real-time data warehouse based on Flink and application of DPI service

Wu Xiaofang

Abstract: In the era of big data, digital transformation is the inevitable choice of enterprise development strategy, and construction of real-time data warehouse is the top priority of digital transformation. Compared with traditional batch processing, real-time computing can quickly reflect the value of data and has a wide range of real-time business scenarios. In this paper, a real-time data warehouse design based on Flink is proposed and verified in practice in DPI business scenarios. It effectively supports the operators' requirements for multi-dimensional indicators such as business request times, traffic, number of active users, and business success rate. It can lay a solid foundation for the implementation of other broader real-time business scenarios.

Key words: flow calculation; Flink; real time data warehouse; DPI

引言

当今世界,信息化、數字化、智能化成为鲜明的时代特征,数字经济成为经济高质量发展的重要支撑。5G时代的来临,更为数字经济发展提供了崭新的动能,数字化转型成为企业发展战略的必然选择。

根据IBM Marketing cloud的最新报告,“仅过去两年就创建了当今世界90%的数据,每天创建2.5亿亿字节的数据,随着新设备、传感器、新技术的出现,数据增长率还会进一步加快”。运营商DPI(深度报文解析)包括LTE、DPI和家宽DPI,通过分光镜像的数据是海量的,基于这些DPI数据,充分挖掘使用价值,可为网络质量与市场业务提供指导作用。运营商信令数据在场景保障、网络指标裂化、投诉处理、感知问题溯源、问题定位定界等方面起重要作用。针对全网或某些重点区域进行实时指标监控,可以先于投诉解决问题,提升用户对网络感知满意度。

目前现已有大数据基础设施建设,批处理采用基于Spark计算引擎分布式集群,流处理采用基于Storm组件分布式集群。但随着技术的迭代更新,各种处理组件层出不穷,在集群搭建组件选择时,需遵循数据处理高效性、集群稳定性、投资合理性三方面原则基础上,因地制宜,尝试新的技术选型,进而提高性能,降低资源投入。

基于上述问题,本文提出了一种基于Flink的实时数仓设计,应用于运营商DPI数据业务中,在性能、吞吐量等方面效果明显提升,有效地减少了集群中服务器节点数量,节约了硬件资源。

1 Flink概述

Apache Flink[1,2]是一个面向分布式数据流处理和批量数据处理的开源计算框架,它可以在同一个Flink运行时(Flink Runtime)支持分布式流处理和批处理两种类型功能应用[3],极大提高了迭代算法的性能。Flink开源项目是近两年大数据处理领域冉冉升起的一颗新星,但在国内许多大型互联网企业的工程实践中均有应用,如阿里、美团、京东等。本文对三种主流开源流处理的技术做对比,具体如表1所示。

从编程语言角度而言,Spark编程语言主要是Java和Scala。而Flink主要是Java,编程语言更加成熟,代码通用度更高,修改代码更容易。

从时延和吞吐量角度而言,Flink是纯粹的流式设计,通过使用显示迭代程序[4],极大提高了算法性能。Flink吞吐量约为Storm的3~5倍,Flink在满吞吐时延迟约为Storm的一半。Flink在时延和吞吐量方面的性能表现较好,特别适用于对超大规模数据流在线实时计算的要求。

从与现有生态体系结合角度而言,Flink与超大型计算和存储HBase的结合比Spark和Storm更有优势,同时接口也更友好。

综合比较之下,Flink是一个设计良好的框架,它不但功能强大,而且性能出色,同时兼顾低延迟、高吞吐和高性能,所以这是本文采用Flink技术的主要原因。

2 架构设计

2.1 整体架构设计

本项目采用架构分层、功能模块化的总体设计思路。模块间采用标准接口,便于升级替换,整体架构分为三层,具体如图1所示。

⑴ 数据采集层:支持多源异构数据源的数据采集。包括:上网日志留存系统、统一采集平台等。

⑵ 数据处理层:对接数据采集层源数据,实现数据的多样化处理。包括:流式处理、批处理等。对外提供统一的数据共享、数据查询引擎。

⑶ 应用层:依托数据处理层提供的统一数据共享、数据查询引擎,服务多场景引用。包括:可视化分析子系统、业务应用及门户、实时场景。

2.2 实时数仓架构设计

在图1所示的大数据处理平台系统整体架构基础上,针对实时链路进一步细化,其遵循架构分层原则,将数据处理层拆分为二层:数据处理和数据存储,旨在强调Apache Flink的技术核心角色,其完成上游ODS原始数据和DIM公共维表数据的摄取,对接下游DWS实时指标的存储,图2为实时数仓架构设计图。

3 DPI业务实现

图3所示为DPI业务场景数据处理流程,技术选型SDTP+Kafka+Flink+Codis,包括以下六个步骤。

Step1:通过SDTP接口实时采集数据,DPI系统产生的信令数据经过分光、回填地市、号码、打时间戳等数据预处理动作,输出XDR数据到SDTP数据接收集群。

Step2:数据实时加载到Kafka集群,通过SDTP接口实时接收XDR数据,完成解析等预处理动作后实时加载到Kafka集群。

Step3:Flink集群实时读取XDR数据。

Step4:Flink实时处理数据,实现业务逻辑,完成各类型实时指标的计算。

Step5:计算结果实时写入Codis集群。

Step6:历史数据定时同步,提供统一的实时数据共享服务(包括:OpenAPI,WS)对外提供数据服务,包括实时数据查询、历史数据查询等。

3.1 数据采集

通过SDTP接口实时采集DPI系统数据并输出到Kafka集群时,根据业务属性和数据规模, 对Kafka Topic进行了细化设计,具体见表2所示。

3.2 数据处理

信令实时指标定义,时间维度包括1分钟、5分钟。空间维度从小到大包括小区、场景/地市、省等。指标包括:业务请求次数(COUNT)、流量(SUM)、活跃用户数、业务成功率等。文中表3给出了实时指标定义示例。

根据不同的指标定义,对应不同的Flink作业。

⑴ 基础指标作业。可分三层,第一层数据接入,第二层完成最细粒度维度所有小区的指标计算,是最核心逻辑。第三层高维度指标聚合,通过第二层中间节点,下游输入数据规模由无限降为有限,最多为小区数*业务细类数,与源数据量无关。

⑵ 用户数指标作业。因为用户数指标的特殊性,其只能对接全量XDR源数据,独立计算所有维度。

3.3 数据存储

本文采用的技术选型Codis集群,根据业务类别和实时指标规模,设计多维度键值指标存储模式,具体详细指标如表4所示。

3.4 应用效果

根据设计的方案,通过实施部署91台物理机,支撑处理数据量100T/天,数据条数3735亿条/天。

经过测试应用,1分钟粒度时延由9分钟缩短为2分钟,5分钟粒度由9分钟缩短为6分钟,时延效果如表5所示。在硬件方面,节省了物理机,减少了硬件投资,降低了CPU使用率,具体性能效果如表6所示。

4 结束语

本文通过分析传统实时数仓组件Spark Streaming和Apache Storm的處理效率低、吞吐率低等问题,基于Flink组件,设计了高效的实时数仓架构,并且结合运营商DPI数据业务场景,实现了技术选型为SDTP+Kafka+Flink+Codis的系统开发上线,在减少大量硬件投入的情况下,满足了运营商对于业务请求次数、流量、活跃用户数、业务成功率等多维度指标需求,达到了降本增效的目的。

参考文献(References):

[1] Alexandrov A, Bergmann R, Ewen S, et al.The

Stratosphere platform for big data analytics[J].Vldb Journal,2014,23(6):939-964

[2] Apache Flink[EB/OL].[2019-09-01].https://flink.apache.

org/.

[3] 宋灵城.Flink和Spark Streaming流式计算模型比较分析[J].

通信技术,2020,53(1):59-62

[4] 代明竹,高嵩峰.基于Hadoop、Spark及Flink大规模数据

分析的性能评价[J].中国电子科学研究院学报,2018,13(2):149-155

收稿日期:2021-10-25

*基金项目:江西省教育科学规划项目“教育大数据背景下在线学习资源个性化智能推荐研究”(21QN012)

作者简介:吴小芳(1990-),女,江西九江人,硕士,工程师,主要研究方向:信息技术,数据挖掘。