Labs 导读
在数字化浪潮的推动下,以政府、工业、金融等为代表的多领域正在全面开展数字化转型建设,一些应用场景,对数据处理的时效性提出了更高的要求。基于此需求,设计并搭建了数据实时处理分析平台,该平台提供基于Flink SQL的数据分析能力,单个SQL语句即可完成数据的采集、计算和传输全流程开发,极大降低了用户使用实时计算能力的门槛,有效提高了实时计算服务的开发效率和质量,助力政府、工业、金融等领域数字化建设。
Part 01 背景
2022年,国务院公开发布了《全国一体化政务大数据体系建设指南》,要求各地区各部门按需建设政务数据实时交换系统,支持海量数据高速传输,实现数据分钟级共享,形成安全稳定、运行高效的数据供应链[1]。
传统的基于CDC[2]的ETL中,数据采集工具是必不可少的,通常使用DataX 和 Sqoop 做全量数据采集,使用 Canal 或 Debezium做增量变更数据采集,采集到的数据传输到消息中间件Kafka中,Flink 计算引擎再去实时消费这一部分数据传输到⽬的端,基于此理念,数据采集链路长,数据传输的时延较高,全量数据和增量变更数据的采集是割裂的两个阶段,此外,需投入更多的时间去维护采集工具和消息队列,运维成本较高。针对上述数据采集链路长、组件维护成本高等问题,设计并搭建了数据实时处理分析平台,该平台基于Apache Flink[3]构建,提供基于Flink SQL的数据分析能力,一个Flink SQL即可完成数据的采集、计算和传输全流程开发。基于Flink CDC[4],可替换传统ETL中的采集工具和消息队列,从⽽简化数据传输链路,降低组件维护成本。
Part 02 什么是流批一体
早期时候Apache Flink虽然是一个可以同时支持流处理和批处理的框架,但是它的流处理和批处理的实现,不管是在API层,还是在底层的Shuffle、调度、算子层,都是单独的两套,这两套实现是完全独立的,没有特别紧密的关联。如图1所示,流批一体早期架构。
在流批一体这一目标的引导下,Apache Flink 现在已经对底层的算子、调度、Shuffle进行了统一的抽象,以统一的方式向上支持 DataStream API 和 Table API两套接口。DataStream API 是一种比较偏物理层的接口,Table API 是一种 Declearetive 的接口,这两套接口对流和批来说都是统一的。如图2所示,流批一体统一架构。
2.1、流批一体架构
图1 流批一体早期架构
图2 流批一体统一架构
2.2 流批一体架构优点
- 代码复用
基于DataStream API和Table API,用户可以写同一套代码来同时处理历史的数据和实时的数据;
- 易于开发
统一的Connector和算子实现,减少开发和维护的成本;
- 易于学习
减少学习成本,避免学习两套相似接口;
- 易于维护
使用同一系统支持流作业和批作业,减少维护成本。
Part 03 数据实时处理分析平台整体架构介绍
该架构自下而上包括数据源层、数据接入层、资源调度层、实时计算平台、数据存储层以及数据应用层。基于该架构可有效解决海量数据快速传输和秒级计算难题,助力政府、工业、金融等领域数字化建设。
图片
(1)数据源层:该分析平台可支持采集数据库中变更的数据,例如,MySQL数据库中Binlog日志完整记录了数据变更,因此可以把 Binlog 文件当作流的数据源;此外该分析平台还支持采集推送至Kafka消息中间件的JSON格式数据。
(2)接入层:该分析平台通过Connector对接外围存储系统,主要包含Flink Connector、Flink CDC Connector和用户自定义Connector,基于这三类Connector,该分析平台构建起完备的外围存储系统生态。
(3)调度层:该分析平台可支持基于K8S[4]的作业调度,借助其强大的能力,实现资源的弹性扩缩容,确保不同作业之间相互隔离,互不影响,避免资源争用抢占,提高作业并行运行的可靠性。
(4)实时计算平台:该平台是整个架构中的关键组成,其由配置中心、数据开发和运维中心三个核心子模块共同组成。其中,配置中心模块主要承担平台配置管理工作,数据开发模块主要承担作业的开发和提交工作,运维中心模块主要承担作业的监控、告警和运维工作。
(5)存储层:用于存储作业的计算结果,通过Flink Connector将计算结果输出到目标端,支持常见的MySQL、PostGreSQL等关系型数据库,还可支持MPP数据库Doris及消息中间件Kafka等。
(6)应用层:该分析平台可以支持各种流式数据分析需求,具备丰富的应用领域和广阔的使用前景,比如可应用于可视化驾驶舱大屏、物联网传感器数据分析等。
Part 04 平台特性
图片
数据实时处理分析平台经过长期的技术积累、业务沉淀,可以总结出以下5大特性:
1.易用的平台,提供从SQL开发调试到上线下线的运维监控及SQL的查询执行能力,使数仓建设及数据治理一体化;
2.敏捷的平台,支持与DevOps协同,一键部署线上作业;
3.云化的平台,支持K8S资源调度,借助其强大的能力,实现资源的弹性扩缩容;
4.安全的平台,采用多租户隔离机制,在数据存储、计算、调度等层面保障用户数据安全;
5.开放的平台,拥抱开放的生态,开放的架构。
Part 05 平台功能介绍
该分析平台由配置中心、数据开发和运维中心三个核心子模块共同组成。其中,配置中心模块主要承担平台配置管理工作,数据开发模块主要承担作业的开发和提交工作,运维中心模块主要承担作业的监控、告警和运维工作;
5.1 概览页
图片
5.2 可视化作业开发
该分析平台提供基于可视化、沉浸式的作业开发界面,帮助用户快速的构建SQL作业,具备自动提示、补全、高亮、美化等高级特性,可通过脚本模式去构建SQL作业,这种模式适合高级开发者,也可通过引导模式去构建SQL作业,通过选数据源、维表和目标表一键生成SQL作业,显著提升SQL作业创建效率,还提供标准的SQL语法检查,帮助用户快速定位开发过程中碰到的问题,基于以上模式创建的SQL作业,可一键提交部署到集群中去,不必关心作业提交细节。
5.2.1 脚本模式创建作业
图片
5.2.2 引导模式创建作业
图片
5.2.3 语法校验
图片
5.3 作业运维与监控
该分析平台提供通过Flink Web UI、错误日志等实时监控作业的运行状态,还提供对错误作业进行邮件、短信提示,缩短发现作业问题时间,提升问题定位效率,还提供作业的启动、停止等操作,还支持根据不同位点恢复作业,确保数据不丢失。
5.3.1 作业运维
图片
5.3.2 作业监控
图片
5.3.3 作业告警
图片
Part 06 应用实践-可视化驾驶舱大屏
在Chrome数字政府建设的第一要素是数据,数据在数字政府建设进程中至关重要,做什么样的上层应用,呈现什么样的指标,均需要数据来“说话”。以某市政务服务热线12345数据为例,通过设计科学的指标体系,整合不同来源数据,基于该分析平台、大数据分析挖掘和知识图谱等核心技术,通过实时高效的数据计算与人机交互能力,将核心数据指标实时动态呈现,构建可视化驾驶舱大屏,帮助管理者掌握全局,提高决策的科学性和有效性,如图3所示,可视化驾驶舱大屏数据流图。
图3 可视化驾驶舱大屏数据流图
6.1 数据源
围绕数字政府建设要求,某市通过库表的形式提供了政务服务热线12345数据,比如业务诉求表,业务评价表等,依据表业务数据,设计科学的指标体系。
6.2 实时计算平台
该平台通过Flink CDC技术采集数据库变更日志,将数据高效的归集到平台中存储,并将这些日志按发生的顺序捕获、解析,形成特定的数据格式,通过对数据的清洗、聚合和关联等操作,将计算结果实时写入MPP数据库Doris中。
6.3 前端可视化展示
前端服务器定期轮询MPP数据库Doris中的数据,结合酷炫的可视化组件,实现数据的动态实时呈现,帮助管理者掌握全局,提高决策的科学性和有效性。
Part 07 未来展望
在数据实时处理分析平台的探索过程中,性能、场景的支持度、稳定性一直是推动我们平台不断升级的原动力。未来我们将从以下3个方向进行探索:
首先,实时数仓,湖仓一体探索,基于Flink强大的流批一体能力,去构建实时数仓,湖仓一体体系架构;
其次,Flink与K8S 的深度结合探索,随着云服务向算力服务的不断引进,通过K8S的资源调度能力,提升作业运行的稳定性,并能进行大规模运行;
最后,数据高铁探索,数据高铁的建设主要是通过归集模式的提升,从公共数据平台、各个应用系统里直接拉数据,保证数据的及时性、完整性和准确性。
👉参考文献
[1] 国务院办公厅关于印发全国一体化政务大数据体系建设指南的通知 https://www.gov.cn/zhengce/content/2022-10/28/content_5722322.htm.
[2] https://blog.csdn.net/qq30211478/article/details/100690948.
[3] Apache Flink 官网 https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/.
[4] Flink CDC 2.0 正式发布,详解核心改进 https://developer.aliyun.com/article/786600.
[5] K8S:https://kubernetes.io/zh-cn/docs/home/.