当前位置: 首页 > news >正文

物联网数据洪流下,TDengine 如何助 ThingLinks 实现 SaaS 平台毫秒级响应?

作者: thinglinks             转载

在万物互联的时代,大到企业数字化转型、数字城市建设,小到与生活息息相关的家居生活、智能驾驶、运动健康等,都离不开智能物理设备的广泛连接和互通。AIoT(人工智能物联网)是人工智能与 IoT 技术的融合,通过物联网设备产生和收集来自不同维度的海量数据,存储于云端、边缘端和设备端,再通过数据分析引擎及机器学习、神经网络等高级技术,实现万物数据化和万物智联化。

作为一个全面的物联网 SaaS 平台,ThingLinks 致力于将物理设备无缝连接到云端,支持海量设备的接入和管理,简化设备数据采集和远程控制的过程。而在这背后,TDengine 作为 时序数据库(Time Series Database)的选择,为 ThingLinks 提供了强大的数据存储与处理能力,进一步提升了平台的性能和效率。

场景与痛点

数据是数字化时代企业的核心资产。ThingLinks 平台维护着大量的智能设备,这些设备联网后会根据设备设定的速率持续产生时序数据。例如,有些设备的采样间隔是 5 秒。为了应对庞大的数据存储和计算挑战,ThingLinks 结合自身数据特点与业务需求,对多种工业时序数据库进行了技术选型。以下是我们在数据存储方面的一些做法:数据存储具有较高的数据压缩比;节约存储资源;降低 T 级成本写入和查询性能优异;数据库底层逻辑的优化可以减少 CPU 开销支持数据预聚合;拥有丰富的计算算子强有力的稳定架构。

ThingLinks 云物联网 SaaS 平台提供了一个全面的解决方案,用于将物理设备无缝连接到云端,支持海量设备的接入和管理。此平台使设备数据采集上云变得简单高效,并允许用户通过云端下发命令实现对设备的远程控制。ThingLinks 平台的核心特性包括:

  1. 强大的物联网平台 — 作为业务应用和设备之间的桥梁,ThingLinks 平台屏蔽了设备接口的复杂性,实现了快速的设备接入。它还提供了强大的开放能力,支持用户根据各自行业需求构建定制化的物联网解决方案。
  2. 灵活的设备接入方式 — 设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi 等多种网络接入 ThingLinks 平台。使用 LWM2M/CoAP、MQTT、HTTPS 等协议,设备能够有效地上报业务数据,同时接收来自平台的控制命令。
  3. 高效的业务应用集成 — 业务应用可通过调用 ThingLinks 平台提供的 API 实现设备数据的采集、命令下发和设备管理等功能。这使得整个物联网解决方案更加高效和可靠。

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

ThingLinks 物联网平台充分考虑到设备接入的多样性和复杂性,提供了灵活多变的接入选项和高效的设备管理能力。以下是平台支持的关键特性:

  1. 多样化接入方式 — 支持终端设备直接接入,以及通过工业网关或家庭网关接入,满足不同场景的接入需求。
  2. 多网络与多协议支持 — 适应多种网络环境(如固网、无线网络等)和多种通信协议(包括专业的工业协议和通用的网络协议),确保设备能够顺利接入。
  3. 系列化 Agent 接入 — 提供一系列的 Agent 接入方案,解决了设备接入的复杂性和碎片化问题,使得各类设备能够无缝集成到平台中。
  4. 高效的设备管理 — 提供丰富完备的设备管理功能,简化海量设备的管理工作,提升管理效率和安全性。

技术选型

在 ThingLinks 2020 年开源初期,我们对几种业界主流的时序数据库做了分析和测试,最终选择了 TDengine 作为平台的首选时序数据库。相比其他方案,TDengine 在性能、成本、运维难度等方面表现出色,支持横向扩展且高可用。

架构设计

产品主要依托 TDengine 为数据核心,承载实时和历史数据写入、存储和查询的工作,是坚实的数据底座,保证了上层应用生态的繁荣发展。

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

产品架构图

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

技术栈

数据模型

在数据模型方面,TDengine 数据模型需根据 ThingLinks 的产品模型进行设计,以实现最佳性能和功能。ThingLinks 的产品模型定义包括产品信息和服务(由属性和命令组成)两部分,旨在描述产品的基本信息和业务能力。基于这些模型,ThingLinks 可以确保所有设备按照统一的结构工作。

为了更好地利用 TDengine 的性能和功能,我们基于 ThingLinks 的产品模型设计了超级表的 Schema。这一设计使得设备的数据存储和处理更加高效和可靠。

超级表设计概念

每个设备对应一张子表,每类设备(产品服务)对应一个超级表基于产品类型和物模型属性创建超级表,数据聚合以子表为维度,按照物模型及数据特性选择不同的聚合算子进行聚合。 具体的超级表设计示例如下:

 
  1. CREATE STABLE `common_4001308136820736_default_attributes_controls` (
  2. `ts` TIMESTAMP ENCODE 'delta-i' COMPRESS 'lz4' LEVEL 'medium',
  3. `event_time` TIMESTAMP ENCODE 'delta-i' COMPRESS 'lz4' LEVEL 'medium',
  4. `battery` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  5. `device_temperature` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  6. `linkquality` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  7. `power_outage_count` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  8. `voltage` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  9. `vibration` BOOL ENCODE 'bit-packing' COMPRESS 'lz4' LEVEL 'medium',
  10. `strength` INT ENCODE 'simple8b' COMPRESS 'lz4' LEVEL 'medium',
  11. `angle_x` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
  12. `angle_y` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
  13. `angle_z` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
  14. `x_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
  15. `y_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium',
  16. `z_axis` DOUBLE ENCODE 'delta-d' COMPRESS 'lz4' LEVEL 'medium'
  17. ) TAGS (`device_identification` VARCHAR ( 64 )) SMA (`ts`,`event_time`)

平台侧创建产品服务

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

定义该服务下具有的服务属性

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

操作产品赋能即可对 TDengine 数据模型做同步更新,对属性变更,SQL 执行结果可视化展示。

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

在实际应用中,可以有多个服务,每个服务都有不同的属性和命令,例如水表应用场景等:

  • 基础(waterMeterBasic):定义水表上报的水流量、水温、水压等参数
  • 告警(waterMeterAlarm):定义水表需要上报的各种告警场景的数据
  • 电池(battery):定义水表的电压、电流强度等数据
  • 传输规则(deliverySchedule):定义水表的一些传输规则
  • 连接(connectivity):定义水表连接参数

通过 ThingLinks 可以快速生成 TDengine 超级表,设备上报数据自动生成子表,实现高效数据管理。

多租户数据隔离

在多租户环境下,ThingLinks 采用每个租户一个时序库的设计,确保数据的隔离性和安全性。每个租户的数据独立存储在其专属的 TDengine 数据库中,通过独立的数据源实现大租户的数据隔离,而小租户则通过列级别的权限管理进行数据隔离。

这种设计不仅提高了数据管理的灵活性,还确保了各租户的数据隐私和安全。大租户可以在其独立的数据库中进行复杂的数据操作和分析,而小租户则享有细粒度的权限管理,确保数据的安全访问。

TDengine 时序数据库赋能 ThingLinks——构建高效可靠的云物联网 SaaS 平台 - TDengine Database 时序数据库

落地实施

在实际落地实施过程中,ThingLinks 平台结合业务需求与数据特点,充分利用 TDengine 的高性能和高可用性,实现了以下方案:

  • 设备数据采集:设备通过 MQTT、CoAP、HTTPS 等协议将数据上报到 ThingLinks 平台。
  • 数据解析与匹配:ThingLinks 平台接收到设备上报的数据后,进行数据解析并与相应的产品模型进行匹配,确保数据结构的一致性。
  • 数据存储:解析和匹配后的数据首先存储在 TDengine 中,保证数据的实时性和完整性。

总结

TDengine 赋能 ThingLinks,提供了强大的数据存储和处理能力,使得 ThingLinks 能够更加高效、可靠地服务于物联网应用。无论是设备接入的灵活性,还是业务应用的高效集成,ThingLinks 都表现出了卓越的性能和适应性。通过这种协同工作,ThingLinks 为用户提供了一个全面、高效的云物联网 SaaS 平台解决方案,推动了各行业的数字化转型。

关于 TDengine

TDengine 核心是一款高性能、集群开源、云原生的时序数据库(Time Series Database,TSDB),专为物联网IoT平台、工业互联网、电力、IT 运维等场景设计并优化,具有极强的弹性伸缩能力。同时它还带有内建的缓存、流式计算、数据订阅等系统功能,能大幅减少系统设计的复杂度,降低研发和运营成本,是一个高性能、分布式的物联网IoT、工业大数据平台。

http://www.dtcms.com/a/263683.html

相关文章:

  • LabVIEW调用Excel宏实现数据可视化
  • 4D 毫米波雷达
  • 21、鸿蒙学习——使用App Linking实现应用间跳转
  • SQL Server 进阶:递归 CTE+CASE WHEN 实现复杂树形统计(第二课)
  • 【Python基础】12 闲谈分享:Python用于无人驾驶的未来
  • 借助飞算AI新手小白快速入门Java实操记录
  • 嵌入式编程-使用AI查找BUG的启发
  • AG32调试bug集合
  • [论文阅读] 人工智能 + 软件工程 | 从软件工程视角看大语言模型:挑战与未来之路
  • 基于 Vue + RuoYi 架构设计的商城Web/小程序实训课程
  • 企业级应用技术-ELK日志分析系统
  • java生成word文档
  • 11年考研作文真题大数据
  • 边缘人工智能与医疗AI融合发展路径:技术融合与应用前景(下)
  • SpringBoot计时一次请求耗时
  • mac python3.13 selenium安装使用
  • [特殊字符] 分享裂变新姿势:用 UniApp + Vue3 玩转小程序页面分享跳转!
  • IntelliJ IDEA 2025- 下载安装教程图文版详细教程(附激活码)
  • Python 库 包 nltk (Natural Language Toolkit)
  • 类加载生命周期与内存区域详解
  • 【FR801xH】富芮坤FR801xH之UART
  • npm list的使用方法详细介绍
  • 基于 Three.js 与 WebGL 的商场全景 VR 导航系统源码级解析
  • python 操作 hive
  • vue | 插件 | 移动文件的插件 —— move-file-cli 插件 的安装与使用
  • RabbitMQ - SpringAMQP及Work模型
  • C++仿函数与谓词深度解析:函数对象的艺术
  • android apk签名
  • 文件系统之配置网络参数
  • SiFli 52 UART的RX唤醒MCU怎么做