基于 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案

作者:田向阳,联通西部创新研究院 大数据专家

共创:SelectDB 技术团队

导读: 数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架构演进为 All in Apache Doris 的实时/离线一体化架构,并凭借 Doris 联邦查询能力打造统一查询网关,数据处理及查询链路大幅简化,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率全方位的提升。

随着通信技术的飞速发展,5G 已成为当今时代的重要标签。在这一背景下,5G 全连接工厂应运而生,不仅代表了工业制造的未来方向,更是数字化转型和智能制造的典范。

5G 全连接工厂,顾名思义,是利用 5G 等新一代信息通信技术,实现工厂内部各个生产单元的广泛连接。这种连接不仅仅局限于设备和系统的联网,更包括人员、物料、环境等多元素的互联互通。通过这种全方位的连接,5G 全连接工厂能够实时收集、分析和处理大量数据,从而优化生产流程,提高生产效率,降低运营成本。

作为中国最大规模的电信运营商之一,中国联通具备广泛 5G 网络覆盖,拥有大量通信基站、光纤网、数据中心等物理网络基础设施,这为建设 5G 连接工厂提供了坚实的基础。同时,中国联通还针对 5G 全连接工厂的需求,提供了一整套解决方案,旨在实现制造型企业生产要素的全面互联和数据实时采集。

中国联通 5G 全连接工厂.PNG

联通 5G 全连接工厂解决方案实现生产制造企业各生产要素(人、机、料、法、环、测)的全面互联,面向数字化车间和智能工厂的核心需求,提供统一的平台底座,支持数据实时采集、实时反馈生产运营状况,并建立企业的生产数据中台,对生产过程中的数据进行处理和标准化管理,实现企业数据接口、格式的统一标准,将数据转化为资产,进而为工厂提供高效的数据服务,挖掘数据的价值。

系统需求

数据是 5G 全连接工厂的核心要素,为了支持全方位的数据收集、存储、处理和分析能够高效进行,负责数据汇总存储以及支撑决策分析的数据仓库引擎是其中关键,需要具备以下能力:

01 数据写入需求

5G 全连接工厂涉及大量设备、传感器和系统的连接,将产生海量类型格式各异的实时数据,这些数据具备密度高、维度多的特点。为确保如此大规模数据的流畅写入, 数据仓库引擎必须能够:

  • 支持大规模历史存量数据的批量和高效导入;
  • 支持高频率、低延迟的实时数据写入,包括生产设备传感数据、业务数据库 CDC 数据以及系统日志数据等;
  • 支持基于文件的数据导入能力,包括结构化及半结构化数据文件的导入;
  • 对于生产订单、物料使用、人员管理等业务数据,还需要支持基于主键的写入更新能力,确保数据的准确性和一致性。

02 数据查询需求

5G 全连接工厂为企业提供自主在线分析、可视化大屏、经营报表分析等数据服务,并对外开放大量的接口,以满足客户的临时需求。在数据查询场景中, 数据仓库引擎必须响应多种不同模式的查询负载:

  • 毫秒级点查询:在对外接口服务中,能够以毫秒级的速度对单个数据点或记录进行查询,并快速返回查询结果,以满足在线实时的查询需求;
  • 毫秒级聚合查询:对于按小时、天进行分区的数据,数据库应具备毫秒级的聚合查询能力,以支持快速的数据汇总和统计分析;
  • 秒级在线多维分析:具备在线多维分析秒级响应能力,可迅速从复杂查询中获取有价值的信息;
  • 复杂多表关联查询:支持高效的多表关联查询,以满足复杂的数据关联分析需求,帮助数据价值的深度洞察。

同时应对生产报表的产出,还需要提供稳定的查询效率,确保报表的数据准确性和及时性。

基于Hive+ ClickHouse 的数据存储引擎

最初,联通 5G 全连接工厂采用的是典型的 Lambda 架构,包括离线和实时两条数据处理链路。

01 离线数据链路

在离线数据处理链路中,业务系统数据和接口数据基于 DataX 定时抽取到 Hive,在 Hive 中完成宽表处理后,再加载到 ClickHouse 中,为应用层提供服务。日志数据则通过 Flume 实时采集到 HDFS 中,在 Hive 中进行宽表处理后,同样汇聚到 ClickHouse 中提供服务。而设备上报数据则是通过 API 接口,直接写入时序数据库中,由时序数据库提供部分服务。

基于 Hive + ClickHouse 的数据存储引擎-离线数据链路

02 实时数据链路

在实时数据处理链路中,各业务系统数据主要以 Binlog 的方式经由 Flink CDC 写入 Kafka,并利用 Flink 的多流 Join 将实时表与维度表进行统一宽表处理。维表数据通过 Flink 实时从 Kafka 中抽取,并存储到 HBase 中,然后通过 Flink 的 Lookup Join 进行统一的宽表处理,最终将数据写入 ClickHouse,以支持在线多维查询。

基于Hive+ 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 对原有数据平台的存储引擎进行升级改造。

基于 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 对原有实时和离线处理链路进行了改造升级,成功建立了在离线一体的数据处理架构,数据流转链路如下图所示:

基于 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,可以实现更简单更快捷的运维工作,运维成本成倍下降。

工业互联网数据集成平台

数据集成是 5G 全连接工厂的关键能力之一,随着 5G 全连接工厂在多家企业生产环境落地,对于数据分析和数据对外开放的需求也在不断地更新变化。针对 5G 数据集成场景的特点,建设了工业互联网数据集成平台:

  • 数据来自于各种生产设备和系统,如 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 来实现。

总结与收益

Apache Doris 的引入,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率等全方位的提升,具体体现为:

  • 70% 的核心业务实现准实时:通过 Flink CDC + Doris 为核心业务构建实时链路,通过 JDBC Catalog 对边缘业务进行定时批量拉取,成功实现 70% 核心业务的准实时数据处理。
  • 承担 90% 实时计算: 利用 Doris 的强大计算能力,承担了当前平台 90%以上的实时计算。利用 JDBC 与 Doris 的维度建模定时产出报表数据,从而实现毫秒级的报表查询,为业务提供了快速高效的报表数据分析能力。
  • 在线实时分析、多维分析:DWD 明细表基于小时时间分区,根据业务查询特点将关联字段作为分桶字段,对常用检索字段进行索引,实现在线分析秒级内响应。
  • 开发效率大幅提升: 采用 Doris 生态的轻量级存储架构,取代了过去基于 Hadoop 的 Lambda 架构,运维成本得到极大幅度降低。借助 Doris 构建了完整的数据仓库分层体系,由 Doris 内部计算作业取代了 Flink 多流 Join 复杂场景任务开发,极大提高了开发效率。此外,由于 Doris 直接对接 MySQL 协议,降低了学习成本,进一步提升了开发效率,项目交付周期得到大幅缩短。

未来规划

未来,联通西部创新研究院将继续深入使用 Apache Doris,这有利于降低企业数字化转型成本,提高传统制造业转型效率:

  • 大规模引入 Doris Manager :为了简化运维工作,计划采用 Doris Manager 进行线上运维。相比手动管理和使用 Grafana + Prometheus 的方式,Doris Manager 提供了更便捷和高效的运维管理功能。通过监控功能,便捷地定位和解决异常问题,提升运维效率。
  • 查询性能优化:根据外部项目的迭代需求,将进一步优化查询性能,包括索引加速、慢查询监控、合理的资源队列划分等方面的优化工作,旨在提升整体查询效率和系统性能。
  • 尝试 多表物化视图:2.1 新版本推出的多表物化视图功能将会进一步简化任务构建步骤,加速数仓建设。
  • 尝试存算分离:即将发布的 Apache Doris 3.0 新版本将集成并开源 SelectDB Cloud 的商业存算分离实现,值得期待。
  • 规范化指标体系:基于 Apache Doris 构建高效的面向 5G 全连接工厂场景的规范化指标体系,帮助企业规范化和标准化数据指标的定义和使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664852.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用PNP管控制MCU是否需要复位

这两台用到一款芯片带电池,希望电池还有电芯片在工作的时候插入电源不要给芯片复位,当电池没电,芯片不在工作的时候,插入电源给芯片复位所以使用一个PNP三极管,通过芯片IO控制是否打开复位,当芯片正常工作的…

在长窗口时代,RAG技术是否仍然必要?

自从谷歌推出 Gemini 1.5 Pro,行业内部对于 RAG 的讨论就不绝于耳。 Gemini 1.5 Pro 的性能确实令人瞩目。根据谷歌公布的技术文档,该系统能够稳定处理长达 100 token 的内容,相当于一小时的视频、十一小时的音频、超过三万行的代码或七十万…

Spring Cloud Alibaba-09-Seata分布式事务

Lison <dreamlison163.com>, v1.0.0, 2024.5.03 Spring Cloud Alibaba-09-Seata分布式事务 文章目录 Spring Cloud Alibaba-09-Seata分布式事务分布式事务基础事务本地事务分布式事务分布式事务的场景 分布式事务的解决方案全局事务可靠消息服务最大努力通知TCC事务 Se…

Java实现数据结构---数组

文章目录 概念存储原理数组的操作完整代码 概念 数组是&#xff08;Array&#xff09;是有限个相同类型的变量所组成的有序集合&#xff0c;数组中的每一个变量为称为元素。数组是最简单、最常用的数据结构。 数组下标从零开始。 存储原理 数组用一组连续的内存空间来存储一…

蓝桥杯第17135题 不完整的算式 C++ Java Python

目录 题目 思路和解题方法 步骤 1&#xff1a;识别缺失的部分 步骤 2&#xff1a;根据已知条件计算或推断 步骤 3&#xff1a;处理特殊情况和验证 c 代码 Java 版本 Python 版本&#xff08;仅供参考&#xff09; 代码和解题细节&#xff1a; 题目 题目链接&#xff…

STM32自己从零开始实操03:输出部分原理图

一、继电器电路 1.1指路 延续使用 JZC-33F-012-ZS3 继电器&#xff0c;设计出以小电流撬动大电流的继电器电路。 &#xff08;提示&#xff09;电路需要包含&#xff1a;三极管开关电路、续流二极管、滤波电容、指示灯、输出部分。 1.2数据手册重要信息提炼 联系排列&…

神经网络与深度学习——第3章 线性模型

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第3章 线性模型 线性模型 线性模型&#xff08;Linear Model&#xff09;是机器学习中应用最广泛的模型&#xff0c;指通过样本特征的线性组合来进行预测的模型&#xff0c;给定一个 D D D维样本 x [ x …

解锁 GPT-4o 背后数据带来的情绪价值

GPT-4o 可以说已经是一个富有情感、通人性的智能语音助手&#xff0c;或者更准确地说&#xff0c;是一个越来越接近人类交互的 “新物种”。这个强大的模型同时具备文本、图片、视频和语音理解和合成方面的能力&#xff0c;甚至可以被视为 GPT-5 的一个未完成版。 01 富有情感的…

lipo制作通用版本静态库

文章目录 目的了解多架构的maclipo如何利用lipo编译通用版本静态库lipo 命令整理扩展目的 主要是使用lipo命令在macOS上创建通用版本的静态库(.a文件),来支持多种架构,如arm64,x86_64。 学习目的: 了解mac 不同架构arm64, x86_64了解lipo命令了解多架构的mac 随着appl…

Linux - 文件管理高级1

0.管道 | 将前面命令的标准输出传递给管道作为后面的标准输入 1.文件查找 find find 进行文件查找时&#xff0c;默认进行递归查找&#xff0c;会查找隐藏目录下的文件 1.1 用法 # find 查找路径 查找条件... -type // 文件类型 f 普通文件 b 设备 d …

数据目录用处如此之大?四个步骤教你构建数据目录

在数字化浪潮的推动下&#xff0c;数据已成为企业决策的核心。然而&#xff0c;随着数据量的爆炸性增长&#xff0c;如何高效地管理和利用这些宝贵的数据资产&#xff0c;成为了一个日益严峻的挑战。企业需要一个强大的工具来组织、索引和解释其数据&#xff0c;以便快速发现和…

代理IP怎么检测?如何判断IP好坏?

当我们的数字足迹无处不在&#xff0c;隐私保护显得愈发重要。而代理IP就像是我们的隐身斗篷&#xff0c;让我们在各项网络业务中更加顺畅。 我们常常看到别人购买了代理IP服务后&#xff0c;用在线检测网站检查IP&#xff0c;相当于一个”售前检验““售后质检”的作用。但是…

图书管理系统——Java实现

文章目录 Java实现图书管理系统问题分析框架搭建业务实现项目测试代码演示BookioperationUserMain&#xff08;默认包&#xff09; Java实现图书管理系统 学习了前六篇的SE语法&#xff0c;我们现在要用它们实现一个简单的图书管理系统项目&#xff0c;深入了解各个知识点的应…

【CH32V305FBP6】4. systick 配置

配置 main.c void SYSTICK_Init_Config(u_int64_t ticks) {SysTick->SR & ~(1 << 0);//clear State flagSysTick->CMP ticks - 1;SysTick->CNT 0;SysTick->CTLR 0xF;NVIC_SetPriority(SysTicK_IRQn, 15);NVIC_EnableIRQ(SysTicK_IRQn); }中断计数 …

算法-扫描线

目录 什么是扫描线算法&#xff1f; 扫描线简单应用 更多的扫描线 什么是扫描线算法&#xff1f; 在计算几何中&#xff0c;扫描线算法&#xff08;scan line algorithm&#xff09;一般用来解决几何图形的面积交并&#xff0c;周长交并问题&#xff0c;扫描线算法的核心思想…

Day 8:1461. 检查一个字符串是否包含所有长度为 K 的二进制子串

Leetcode 1461. 检查一个字符串是否包含所有长度为 K 的二进制子串 给你一个二进制字符串 s 和一个整数 k 。如果所有长度为 k 的二进制字符串都是 s 的子串&#xff0c;请返回 true &#xff0c;否则请返回 false 。 截取每个长度为 k 的字符串&#xff0c;加入 Set 中&#x…

wpf listbox实现选中动画

效果如下&#xff1a; 参考&#xff1a;https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples.Shared/Controls/NavigateMenu/NavigateMenu.xaml 实现上述效果的前台代码&#xff1a; <Windowx:Class"ListBox.MainWindow"…

数据隐私新篇章:Facebook如何保护用户信息

随着数字化时代的到来&#xff0c;数据隐私保护成为了社交媒体平台和用户共同关注的焦点。作为全球最大的社交网络之一&#xff0c;Facebook一直致力于保护用户的隐私和数据安全。本文将深入探讨Facebook在数据隐私保护方面的措施和实践&#xff0c;以及其如何开启数据隐私的新…

C++系列-类模板

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 类模板的定义格式&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; template<class T> class Stack { public:Stack(size_…

u盘文件保密的方法有哪些?关于U盘的使用你要知道这些!

U盘作为便携式的存储设备&#xff0c;被广泛应用于日常工作和生活中。 然而&#xff0c;U盘的丢失或被盗可能导致敏感数据泄露&#xff0c;因此&#xff0c;掌握U盘文件保密的方法至关重要。 本文将介绍几种有效的U盘文件保密方法&#xff0c;并分享关于U盘使用的关键知识&…