基于 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
The following article is from SelectDB Author 田向阳
数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架构演进为 All in Apache Doris 的实时/离线一体化架构,并凭借 Doris 联邦查询能力打造统一查询网关,数据处理及查询链路大幅简化,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率全方位的提升。
作者|联通西部创新研究院 大数据专家 田向阳
5G 全连接工厂,顾名思义,是利用 5G 等新一代信息通信技术,实现工厂内部各个生产单元的广泛连接。这种连接不仅仅局限于设备和系统的联网,更包括人员、物料、环境等多元素的互联互通。通过这种全方位的连接,5G 全连接工厂能够实时收集、分析和处理大量数据,从而优化生产流程,提高生产效率,降低运营成本。
作为中国最大规模的电信运营商之一,中国联通具备广泛 5G 网络覆盖,拥有大量通信基站、光纤网、数据中心等物理网络基础设施,这为建设 5G 连接工厂提供了坚实的基础。同时,中国联通还针对 5G 全连接工厂的需求,提供了一整套解决方案,旨在实现制造型企业生产要素的全面互联和数据实时采集。
联通 5G 全连接工厂解决方案实现生产制造企业各生产要素(人、机、料、法、环、测)的全面互联,面向数字化车间和智能工厂的核心需求,提供统一的平台底座,支持数据实时采集、实时反馈生产运营状况,并建立企业的生产数据中台,对生产过程中的数据进行处理和标准化管理,实现企业数据接口、格式的统一标准,将数据转化为资产,进而为工厂提供高效的数据服务,挖掘数据的价值。
系统需求
01 数据写入需求
5G 全连接工厂涉及大量设备、传感器和系统的连接,将产生海量类型格式各异的实时数据,这些数据具备密度高、维度多的特点。为确保如此大规模数据的流畅写入, 数据仓库引擎必须能够:
支持大规模历史存量数据的批量和高效导入; 支持高频率、低延迟的实时数据写入,包括生产设备传感数据、业务数据库 CDC 数据以及系统日志数据等; 支持基于文件的数据导入能力,包括结构化及半结构化数据文件的导入; 对于生产订单、物料使用、人员管理等业务数据,还需要支持基于主键的写入更新能力,确保数据的准确性和一致性。
02 数据查询需求
5G 全连接工厂为企业提供自主在线分析、可视化大屏、经营报表分析等数据服务,并对外开放大量的接口,以满足客户的临时需求。在数据查询场景中, 数据仓库引擎必须响应多种不同模式的查询负载:
毫秒级点查询:在对外接口服务中,能够以毫秒级的速度对单个数据点或记录进行查询,并快速返回查询结果,以满足在线实时的查询需求; 毫秒级聚合查询:对于按小时、天进行分区的数据,数据库应具备毫秒级的聚合查询能力,以支持快速的数据汇总和统计分析; 秒级在线多维分析:具备在线多维分析秒级响应能力,可迅速从复杂查询中获取有价值的信息; 复杂多表关联查询:支持高效的多表关联查询,以满足复杂的数据关联分析需求,帮助数据价值的深度洞察。
同时应对生产报表的产出,还需要提供稳定的查询效率,确保报表的数据准确性和及时性。
基于 Hive + ClickHouse 的数据存储引擎
01 离线数据链路
在离线数据处理链路中,业务系统数据和接口数据基于 DataX 定时抽取到 Hive,在 Hive 中完成宽表处理后,再加载到 ClickHouse 中,为应用层提供服务。日志数据则通过 Flume 实时采集到 HDFS 中,在 Hive 中进行宽表处理后,同样汇聚到 ClickHouse 中提供服务。而设备上报数据则是通过 API 接口,直接写入时序数据库中,由时序数据库提供部分服务。
02 实时数据链路
在实时数据处理链路中,各业务系统数据主要以 Binlog 的方式经由 Flink CDC 写入 Kafka,并利用 Flink 的多流 Join 将实时表与维度表进行统一宽表处理。维表数据通过 Flink 实时从 Kafka 中抽取,并存储到 HBase 中,然后通过 Flink 的 Lookup Join 进行统一的宽表处理,最终将数据写入 ClickHouse,以支持在线多维查询。
03 存在的问题
数据链路复杂:为支持报表查询功能,必须先将数据从 Hive 同步到 ClickHouse,再由 ClickHouse 对外提供服务。这无疑增加了数据链路的长度和复杂性。同时,在实时链路中,多流 Join 的操作也带来了一定的计算复杂度,进而增加了数据处理的耗时。 数据准确性问题:在使用多流 Join 处理实时计算时,由于业务不断更新和变化,数据更新可能存在延迟,这就会导致 Join 结果与正确结果有 3%-5% 的偏差。为纠正该问题,每天都需依赖离线数据对实时计算结果进行修正,但同时也为实时性带来潜在风险。 维度变更问题:在宽表模型应用场景下,一旦业务维度发生变更,就需要对历史数据进行离线重刷,导致数据处理效率低下,甚至影响业务侧的正常使用。 高维护成本:当前架构涉及到多个技术栈和组件,例如 Hive、HBase、HDFS 以及 ClickHouse 等,这带来了高昂的使用及维护成本。
基于 Apache Doris 的实时/离线一体化架构
01 数据仓库选型
为满足数据写入场景及数据查询场景的需求,并解决早期架构存在的痛点问题,联通西部创新研究院综合对比了 Apache Doris、ClickHouse、Hive 及数据湖方案,经评估发现 Apache Doris 在多个方面表现均较为出色,并决定选择 Apache Doris 对原有数据平台的存储引擎进行升级改造。
结合实际场景,联通西部创新研究院最为关注的核心能力有以下几点:
简单易用:Doris 兼容 MySQL 协议,业务同学可以直接使用 MySQL 客户端工具进行数据查询,无需学习新的查询语言,降低了使用门槛。 统一数据分析网关:利用 Apache Doris 构建完善可扩展的数据源连接框架,便于快速接入多类数据源,包括各种主流关系型数据库、数据仓库以及数据湖引擎,提供基于各种异构数据源的快速查询和写入能力,从而实现统一的数据分析网关。查询层架构实现链路极简,维护成本也大幅降低。 高性能查询:Doris 支持高性能计算、高性能查询以及高并发点查,即使是特别复杂的多表 Join,也具备出色的性能表现,无需提前聚合即可轻松实现数据实时查询,既减少了数据处理流程,又提高了业务侧的灵活性。 高效的实时数据导入:Apache Doris 能够支持海量数据的高吞吐实时写入,同时也提供了多种数据导入方式,在 IoT 场景的测试过程中,写入性能完全优于时序数据库,可满足所有场景下的数据写入要求。 运维成本低:Doris 本身架构精简,仅含有 FE + BE 两个组件,借助于 SelectDB 的 Doris Manager 平台,可以实现集群的自动化运维,减少人工干预,提高集群的稳定性和可靠性。
基于以上能力,Doris 可以轻松实现实时/离线一体化,减少数据同步的复杂度,提高了数据的一致性。从之前的多组件、多链路的复杂架构转变到 All in One 的架构,可大大简化系统架构,同时也减少运维复杂度以及资源成本。
02 技术架构
通过引入 Apache Doris 对原有实时和离线处理链路进行了改造升级,成功建立了在离线一体的数据处理架构,数据流转链路如下图所示:
对于时效性要求较高的业务数据:使用 Flink Doris Connector 进行实时整库数据同步,将各个业务系统的数据实时地同步到 Doris 中,确保数据的高时效性。 对于时效性要求较低的业务数据:利用 Doris 自带的 JDBC Catalog 可以支持跨源联邦查询,也可以通过调度工具将数据定时抽取数据到 Doris 中,保证数据的准确性和完整性。 对于日志数据和设备上报数据:通过 Flink 将 Kafka 中数据直接写入 Doris 中,由 Doris 统一对整个数仓进行加工。
尽管当前部分设备时序数据采集场景中还保留了时序数据库,但由于时序数据库查询方面的表现很难满足当前的业务场景需求,因此已经开始尝试进行升级。上文提到,即使是 IoT 这种典型的数据量大、数据写入时效性高的场景下,Doris 也完全满足,同时查询方面又能很好的满足需求,因此目前也正在逐步使用 Doris 来实现对时序数据库的替代。
03 架构收益
实时离线一体化:相较于过去冗长且复杂的数据链路和架构,在新架构的 All in Doris 中,不再需要 Hive,ClickHouse, HBase 等组件,离线&实时数据直接进入 Doris,数据链路简化的同时也提高了数据的时效性。 查询性能,时效性指数级提升:过去基于 ClickHouse 提供对外的数据分析能力,受限于 ClickHouse 多表 Join 能力较弱,只能够提前采用其他组件计算后生成大宽表至 ClickHouse 再提供查询,不仅效率低下且一旦业务变更可能需要重新导数。而采用 Doris 后,可直接将 DWD 事实表和维度表开放给应用进行 OLAP 查询,为业务侧提供了更高的灵活性。 统一查询网关:凭借 Doris 优秀的联邦查询能力逐渐基于此打造统一的查询网关。在一些场景中,利用 Doris 自带的 JDBC Catalog 可以支持跨源联邦查询,查询层架构实现链路极简,维护成本也大幅降低。 运维成本成倍下降:过去使用 ClickHouse、HBase、Hive 三大组件, ClickHouse 性能虽强大,但可扩展性、易用性却差强人意,随着使用不断深入、集群规模不断扩大,使用和运维的技术门槛会变得越来越高,不支持弹性扩缩容更是一个长期被诟病的问题。而新架构中, Doris 相较之则是轻松许多,不仅运维方便,更是有着完善的管控工具 Doris Manager,可以实现更简单更快捷的运维工作,运维成本成倍下降。
工业互联网数据集成平台
数据来自于各种生产设备和系统,如 PLC、工业机器人、传感器、数控机床等。这些数据具有不同的格式、结构和标准,需要工业互联网数据集成平台能够实时地将数据采集、整合以及标准化,确保数据的一致性和准确性。 工业互联网数据集成平台还需要具备良好的可扩展性和灵活性,能够适应工厂未来的扩展需求,灵活地应对生产过程中的各种变化和挑战。 工业互联网数据集成平台还需要实现不同系统之间的数据交互和通信,通过跨系统的协同和信息共享,以实现对生产数据的全面监控和分析,提高生产效率和质量。
基于以上需求,以 Apache Doris 为核心,结合多个开源大数据组件构建了工业互联网数据集成平台,整体系统架构如下:
数据源管理层主要负责统一维护和管理各个数据源,平台适配了 Syslog、常见 CDC、时序数据、第三方接口数据、SFTP 文件数据以及业务 DB 等多种不同数据源。 在数据采集层,平台支持实时数据、时序数据和离线数据的采集。主要通过 FlinkCDC 和 SeaTunnel 实现各个数据源之间的数据传输,对于业务 DB 以及 JDBC 数据源的数据则依赖于 Doris 的 JDBC - Catalog 实现批量数据的采集。为了避免大批量数据的集成压力,还引入了 Kafka 用于进行实时数据处理和离线数据的临时加载。 存储和计算层是数据集成平台的核心,在此使用 Apache Doris 作为存储和计算的底座,绝大多数数据均存储在 Apache Doris 中、少数设备采集的时序数据存放在 TDengine。为了提升数据质量、实现数据资产的更高效沉淀,同时还围绕 Apache Doris 构建了数据资产层,包括数据标准定义、数据质量和资产目录管理,以及元数据管理(对接 Doris 元数据库)、血缘关系追踪(通过解析 Doris 审计日志实现)、主题域和算法建模等数据资源管理功能。 在数据服务层,开发了多个系统来保护数据安全、管理用户访问权限和数据共享,作为平台的统一对外接口,所有外部数据服务和数据共享均通过 Doris 的 Multi-Catalog 来实现。
总结与收益
70% 的核心业务实现准实时:通过 Flink CDC + Doris 为核心业务构建实时链路,通过 JDBC Catalog 对边缘业务进行定时批量拉取,成功实现 70% 核心业务的准实时数据处理。 承担 90% 实时计算:利用 Doris 的强大计算能力,承担了当前平台 90%以上的实时计算。利用 JDBC 与 Doris 的维度建模定时产出报表数据,从而实现毫秒级的报表查询,为业务提供了快速高效的报表数据分析能力。 在线实时分析、多维分析:DWD 明细表基于小时时间分区,根据业务查询特点将关联字段作为分桶字段,对常用检索字段进行索引,实现在线分析秒级内响应。 开发效率大幅提升:采用 Doris 生态的轻量级存储架构,取代了过去基于 Hadoop 的 Lambda 架构,运维成本得到极大幅度降低。借助 Doris 构建了完整的数据仓库分层体系,由 Doris 内部计算作业取代了 Flink 多流 Join 复杂场景任务开发,极大提高了开发效率。此外,由于 Doris 直接对接 MySQL 协议,降低了学习成本,进一步提升了开发效率,项目交付周期得到大幅缩短。
未来规划
大规模引入 Doris Manager :为了简化运维工作,计划采用 Doris Manager 进行线上运维。相比手动管理和使用 Grafana + Prometheus 的方式,Doris Manager 提供了更便捷和高效的运维管理功能。通过监控功能,便捷地定位和解决异常问题,提升运维效率。 查询性能优化:根据外部项目的迭代需求,将进一步优化查询性能,包括索引加速、慢查询监控、合理的资源队列划分等方面的优化工作,旨在提升整体查询效率和系统性能。 尝试多表物化视图:2.1 新版本推出的多表物化视图功能将会进一步简化任务构建步骤,加速数仓建设。 尝试存算分离:即将发布的 Apache Doris 3.0 新版本将集成并开源 SelectDB Cloud 的商业存算分离实现,值得期待。 规范化指标体系:基于 Apache Doris 构建高效的面向 5G 全连接工厂场景的规范化指标体系,帮助企业规范化和标准化数据指标的定义和使用。