当前位置: 首页 > 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.lqws.cn/news/602803.html

相关文章:

  • k8s将service的IP对应的不同端口分配到不同的pod上
  • 主流零信任安全产品深度介绍
  • 蓝牙音频传输协议深度解析:A2DP、HFP、AVRCP 对比与面试核心考点
  • ECOVADIS评级提升的关键策略,ECOVADIS评级体系
  • (论文总结)语言模型中的多模态思维链推理
  • DBA 命令全面指南:核心操作、语法与最佳实践
  • C语言再学习—内存,链表
  • React Native 接入 eCharts
  • RocketMQ延迟消息是如何实现的?
  • 前端处理跨域的4种方式
  • 为什么js是单线程?
  • 转录组分析流程(七):GSEA分析
  • 安装emsdk 4.0.10报Connection reset by peer解决
  • OpenCV篇——项目(一)OCR识别读取银行卡号码
  • 内部类与Lambda的衍生关系(了解学习内部类,Lambda一篇即可)
  • Windows10/11 轻度优化 纯净版,12个版本!
  • 【分治思想】归并排序 与 逆序对
  • Nginx重定向协议冲突解决方案:The plain HTTP request was sent to HTTPS port
  • CertiK《Hack3d:2025年第二季度及上半年Web3.0安全报告》(附报告全文链接)
  • OEM怎么掌握软件开发能力
  • 记本好书:矩阵力量:线性代数全彩图解+微课+Python编程
  • Python OrderedDict 用法详解
  • 学习昇腾开发的第11天--主要接口调用流程
  • CMU-15445(6)——PROJECT#2-BPlusTree-Task#1
  • 记一次Ubuntu22安装MongoDB8并同步本地数据过程
  • 应急响应类题练习——玄机第四章 windows实战-emlog
  • 微信小程序使用秋云ucharts echarts
  • 高阶数据结构------并查集
  • 数据结构day7——文件IO
  • STM32——存储器映射(Memory mapping)