TDengine 边云协同:数据同步与汇聚的完整实践指南
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
导读
在工业互联网(IIoT)场景中,边缘设备负责局部数据的实时采集与告警,而决策者需要基于全局数据形成整体认知。本文基于 TDengine 企业版,系统讲解边云协同的数据同步与汇聚方案:如何让边缘侧 TDengine 将数据上报至云端、如何选择"推送 / 拉取 × 数据订阅 / 数据查询"四种同步路径、如何通过 taosExplorer 零代码配置与 taosx 命令行工具完成跨集群同步,并深入剖析 TMQ 订阅、DSN 连接串等底层机制,帮助你快速搭建一套从生产车间到集团总部的分层数据汇聚架构。
为什么需要边云协同
在工业互联网场景中,边缘设备往往只处理局部数据。例如一个生产车间内,监测设备对某几项实时生产数据进行监控与告警,但决策者无法仅凭边缘侧信息形成对整个系统的全局认知。因此,实际应用中边缘设备需要将数据上报给云计算平台(公有云或私有云),在云端实现数据的汇聚与信息融合,从而让决策者获得全局洞察。这种"边云协同"架构已成为支撑工业互联网发展的重要支柱。
边缘侧与中心侧的资源特征差异,决定了这种同步必须"逐级上报、有选择地上报":
- 边缘侧:对实时性要求高,但数据量相对不大。一个生产车间的监测点数量,小到几千个,大到几万个。
- 中心侧:计算资源充足,有能力汇聚边缘侧数据进行分析计算。
- 选择性上报:在整体数据量非常大的场景中必须有所取舍。例如边缘侧每秒采集一次的原始记录,上报至中心侧时降采样为一分钟一次。这种降采样极大减少了数据量,同时保留关键信息,可用于长期数据的分析和预测。
从历史演进看,传统的工业数据采集流程是从工业逻辑控制器(PLC)采集数据,进入 Historian(工业实时库),再支撑业务应用。这类系统多采用主备架构,不易水平扩展,且严重依赖 Windows 生态,相对封闭,难以适应现代工业互联网对数据实时汇聚与全局洞察的要求。
TDengine 的边云协同解决方案
TDengine 企业版提供了完整的边云协同能力,具备以下显著特性:
- 高效数据同步:支持每秒百万条数据的同步效率,确保数据在边缘侧和云端之间快速、稳定地传输。
- 多数据源对接:兼容 AVEVA PI System、OPC-UA、OPC-DA、MQTT 等多种外部数据源,实现数据的广泛接入和整合。
- 灵活配置同步规则:提供可配置的同步规则,用户可根据实际需求自定义数据同步的策略和方式。
- 断线续传与重新订阅:支持断线续传和重新订阅功能,确保在网络不稳定或中断时数据同步的连续性和完整性。
- 历史数据迁移:支持历史数据迁移,方便用户在升级或更换系统时,将历史数据无缝迁移到新系统。
TDengine 的数据订阅功能(TMQ)为订阅方提供了极大的灵活性:用户可以订阅一个数据库、一张超级表,甚至是一个包含筛选条件的查询语句。这使得用户能够实现选择性的数据同步,将真正关心的数据(包括离线数据和乱序数据)从一个集群同步到另一个集群,满足各种复杂场景下的数据需求。
从底层实现看,TDengine 的订阅能力由 TMQ(TDengine Message Queue)机制支撑。在 taosX 参考手册 中可以看到,TMQ 订阅支持with.meta(是否同步创建表、删除表、修改表等元数据操作,默认false)、group.id(订阅组 ID,必填)、client.id(客户端 ID,选填)、auto.offset.reset(订阅起始位置)、experimental.snapshot.enable(是否同步已落盘到 TSDB 时序数据存储文件中的数据)等参数,这些参数共同构成了边云同步规则可配置的底层基础。
选择同步方式
TDengine 支持边缘节点主动向云端推送,也支持云端从边缘节点拉取;两种方向均可使用数据订阅或查询,因此共有四种组合路径。选择原则如下:
| 场景特征 | 推荐方案 |
|---|---|
| 边缘节点较少,且云端可以直接访问边缘节点 | 云端拉取 |
| 边缘节点较多,或不允许从外部访问边缘节点 | 边缘推送 |
| 要求近实时同步 | 数据订阅 |
| 要求定期或按需同步 | 查询 |
下面分别介绍四种方式的配置方法。
边缘推送与数据订阅
当边缘节点较多、云端不便逐个访问,或需要近实时同步时,由边缘节点将数据推送到云端。配置步骤如下:
- 在云端创建用于接收边缘数据的数据库。
- 在浏览器中打开边缘节点的 taosExplorer。
- 在左侧主菜单中选择管理。
- 打开数据复制标签页,点击新增数据复制。
- 选择要同步到云端的数据库。
- 在目标 DSN中输入云端节点的 DSN。
- 点击确认。
边缘节点会将指定数据库的数据推送到云端。可以重复上述步骤以同步其他数据库,或将数据同步到多个云端节点。
边缘推送与数据查询
该方式适合定期或按需同步的场景,通过 taosX 命令行工具直接执行,无需图形界面:
- 在云端创建用于接收边缘数据的数据库。
- 在边缘节点打开终端。
- 执行以下命令,将数据推送到云端:
taosx run -f 'taos://<edge-user>:<edge-password>@<edge-ip>:<edge-port>/<edge-db>' -t 'taos://<cloud-user>:<cloud-password>@<cloud-ip>:<cloud-port>/<cloud-db>' -v例如,以下命令使用默认用户名和密码,把192.0.2.1:6030上边缘节点的sync_test数据库同步到198.51.100.1:6030上云端节点的edge_data数据库:
taosx run -f 'taos://root:taosdata@192.0.2.1:6030/sync_test' -t 'taos://root:taosdata@198.51.100.1:6030/edge_data' -v理解 taosX 的命令行格式与 DSN
taosX 的命令行参数格式为taosx -f <from-DSN> -t <to-DSN> <其它参数>,其中-f指定数据源(Source DSN),-t指定写入目标(Sink DSN)。DSN 采用 URL 风格:
<driver>[+<protocol>]://[[<username>:<password>@]<host>:<port>][/<object>][?<p1>=<v1>[&<p2>=<v2>]]- driver:数据源驱动类型,常见的有
taos(使用查询接口从 TDengine 获取数据)、tmq(启用数据订阅从 TDengine 获取数据)、local(数据备份或恢复)、pi/opc/mqtt/kafka/influxdb/csv/parquet等。 - +protocol:协议修饰符,如
+ws表示使用 WebSocket(REST)方式连接;不使用+ws时使用原生连接,此时 taosx 所在服务器需安装 taosc。 - host:port:数据源的地址和端口。
- object:具体数据源,可以是 TDengine 的数据库、超级表、表,也可以是备份文件路径。
- username / password:数据源的用户名和密码。
- params:DSN 查询参数,如
start、end、mode、interval等。
-v用于指定日志级别:-v为 info,-vv为 debug,-vvv为 trace。
taosx 还支持更丰富的同步粒度,例如同步指定超级表(taos://.../db1?stables=meters)、同步指定子表(taos://.../db1?tables=meters.d0,d1,table1)、同步指定时间区间(?start=2022-10-10T00:00:00Z,使用 RFC3339 格式并注意时区)、持续同步(?mode=realtime&restro=5m&interval=1s&excursion=500ms,其中excursion表示允许 500ms 的延时或乱序数据)、以及"历史 + 实时"全量同步(?mode=all)。更多细节参见 taosX 数据迁移。
云端拉取与数据订阅
当云端可以直接访问边缘节点,且需要近实时同步时,由云端主动订阅边缘节点的数据。配置步骤如下:
- 在浏览器中打开边缘节点的 taosExplorer。
- 在左侧主菜单中选择主题。
- 找到要同步到云端的数据库,在获取 DSN列点击复制,保存该 DSN。
- 打开云端节点的 taosExplorer。
- 在左侧主菜单中选择数据写入。
- 打开数据写入任务标签页,点击新增数据源。
- 输入任务名称。
- 在类型下拉列表中选择TDengine 数据订阅。
- 在目标下拉列表中选择接收边缘数据的数据库;如果没有合适的数据库,点击创建数据库。
- 在连接配置中,把之前复制的 DSN 粘贴到Topic DSN。
- 点击检查连通性,确认云端可以访问边缘节点。
- 在订阅选项的Client ID中输入唯一标识,并按需配置其他选项。
- 点击提交。
云端会订阅边缘节点的指定数据库并将其数据写入云端目标数据库。可以重复上述步骤,从更多边缘数据库或节点同步数据。完整的任务创建与监控步骤参见 TDengine 数据订阅数据源。
订阅任务的进阶配置
在 taosExplorer 的订阅任务中,除了 Client ID 之外,以下选项值得重点关注:
- 订阅初始位置:可选择从最早数据(
earliest)或最晚数据(latest)开始订阅,默认为earliest。 - 超时时间:支持
ms、s、m、h、d、M、y等时间单位。 - 订阅组 ID(group.id):用于标识一个订阅组的任意字符串,最大长度 192。同一个订阅组内的订阅者共享消费进度,不指定时将使用随机生成的 group ID。
- 同步已落盘数据:启用后可以同步已经落盘到 TSDB 时序数据存储文件中的数据;关闭则只同步保存在 WAL 中、尚未落盘的数据。
- 同步删表 / 删数据操作:控制是否将删表、删数据操作同步到目标数据库。
- 压缩:启用 WebSocket 压缩支持,降低网络带宽占用。
taosX 还支持在一个任务中订阅多个 Topic(用逗号分隔,如tmq+ws://root:taosdata@localhost:6041/topic1,topic2,topic3),并且可以直接用数据库名、超级表名或子表名代替 Topic 名——此时 taosX 会自动在源集群创建对应的订阅 Topic,无需提前手工创建。在 DSN 中也可以显式指定group.id参数。
云端拉取与数据查询
该方式适合定期或按需同步,由云端通过 SQL 查询主动拉取边缘数据:
- 打开云端节点的 taosExplorer。
- 在左侧主菜单中选择数据写入。
- 打开数据写入任务标签页,点击新增数据源。
- 输入任务名称。
- 在类型下拉列表中选择TDengine 查询。
- 在目标下拉列表中选择接收边缘数据的数据库;如果没有合适的数据库,点击创建数据库。
- 在连接配置中选择
WS协议,填写边缘节点 taosAdapter 的主机名或 IP 地址、端口,以及要同步的数据库。 - 在认证中填写有权访问该数据库的边缘节点用户名和密码。
- 点击检查连通性,确认云端可以访问边缘节点。
- 按需配置其他选项,点击提交。
云端会查询边缘节点的指定数据库并将数据写入云端目标数据库。详情参见 TDengine 查询数据源。
查询迁移模式解析
"TDengine 查询"数据源的底层由 taosX 通过 SQL 查询源集群数据并写入目标库实现:taosX 以一个子表的一个时间段的数据作为查询的基本单元,将要迁移的数据分批写入目标数据库。它支持三种迁移模式:
- history 模式:迁移指定时间范围内的数据,若不指定时间范围则迁移截至创建任务前的所有数据,迁移完任务即停止。
- realtime 模式:同步从任务创建时间起之后的数据,若不手动停止任务则持续运行。
- both 模式:先执行 history 模式,再执行 realtime 模式。
每种模式下都可以指定是否迁移表结构:选择always会先同步表结构再迁移数据(子表数量多时耗时较长);如果目标数据库已有与源库相同的表结构,建议选择none以节省时间。任务运行过程中会持续保存进度信息到硬盘,因此任务暂停后重启或从异常中自动恢复时,不会从头开始执行。
边云协同架构实践:一个三层数据汇聚实例
下图以一个具体的生产车间实例展示了在 TDengine 企业版中实现边云协同的完整架构。在生产车间,设备产生的实时数据存储至部署在边缘侧的 TDengine;部署在分厂的 TDengine 会去订阅生产车间的 TDengine 中的数据。为了更好地满足业务需求,数据分析师可以设置订阅规则,例如将数据进行降采样,或只同步超过指定阈值的数据;部署在集团侧的 TDengine 再订阅来自各座分厂的数据,实现集团维度的数据汇聚后,即可进行下一步的分析和处理。
从图中可以看出,这套架构形成了清晰的"车间 → 分厂(区域级节点)→ 集团(总集群)"分层订阅链路:每个车间的 TDengine 节点将数据实时订阅同步到所属分厂的区域级 TDengine 节点,各分厂节点再进一步上传至集团总 TDengine 集群,最终支撑全局数据分析。
该实现思路主要有以下几点优势:
- 零代码:不需要编写一行代码,只须在边缘侧和云端进行简单配置即可。
- 自动化程度高:数据跨区同步自动化程度大大提高,错误率降低。
- 无数据缓存:数据无须缓存,减少批量发送,避免流量高峰阻塞带宽。
- 规则可配置:通过订阅方式同步数据,规则可配置,简单、灵活、实时性高。
- 数据模型统一:边云均采用 TDengine,数据模型完全统一,降低数据治理难度。
制造业企业通常面临的一个痛点就是数据同步,很多企业目前采用离线方式同步数据。TDengine 企业版实现了数据的实时同步且规则可配置,能够避免定期传输大数据量导致的资源浪费和带宽阻塞风险。
边云协同的优势:打破数据孤岛,支撑智能化升级
传统产业的 IT 和 OT(Operational Technology,运营技术)建设状况各异,相较于互联网行业,大多数企业在数字化方面的投入明显滞后。许多企业仍在使用过时的系统处理数据,而这些系统往往相互独立,形成了所谓的数据孤岛。
在这样的背景下,要让 AI 为传统产业注入新的活力,首要任务是整合分散在各个角落的系统及其采集的数据,打破数据孤岛的限制。然而这一过程充满挑战:由于涉及多种系统和繁多的工业互联网协议,数据汇聚并非简单的合并工作,它要求对来自不同数据源的数据进行清洗、加工和处理,以便将其整合到一个统一的平台上。
当所有数据汇聚于一个系统时,可以带来三方面显著收益:
- 处理效率提升:访问和处理数据的效率显著提高,企业在应对实时数据时能够更迅速地做出反应,更有效地解决问题,企业内外的工作人员也能实现高效合作。
- 实时告警与异常监测:数据汇聚后,可以利用先进的第三方 AI 分析工具进行更优质的异常监测和实时告警。
- 精准预测:为产能、成本、设备维护等方面提供更精准的预测,使决策者更好地把握整体宏观情况,助力传统产业实现数字化转型和智能化升级。
延伸阅读
- 掌握 taosX 的完整命令、DSN 参数、服务模式配置(
/etc/taos/taosx.toml)与监控指标:taosX 参考手册 - 了解数据订阅任务在 taosExplorer 中的完整创建与监控流程:TDengine 数据订阅数据源
- 了解"TDengine 查询"迁移任务的三种模式与高级选项:TDengine 查询数据源
- 深入 TMQ 数据订阅机制与 Topic 语法:数据订阅
【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考