云浮市物联网研究院基于 TDengine 打造企业级物联网IoT中间件平台

云浮市物联网研究院有限公司是温氏系企业,筠诚装备管理集团下属公司,主要为大型养殖业客户提供 AIoT 物联网服务。为了实现各厂商、各品牌相关环境控制器、传感器的数据接入,联合深圳市哇发科技有限公司,搭建了企业级的物联网中间件平台,专门负责设备接入、数据采集。

业务背景和痛点

在平台建设前期,并没有采用时序数据库(Time-Series Database),而是采用了阿里云的 MySQL 实现所有传感器数据的存储。在设备接入量突破 6 万,每日数据记录超过 8000 万条之后,平台性能急剧下降。

根据项目规划,平台要支持数十万设备的接入,之前采用 MySQL 数据库分表的方案已经无能为力。有鉴于此,基于物联网平台的特性,规划引入时序数据库解决物联网中间件平台在数据的存储和处理方面的痛点。

为什么选择 TDengine Database

在养殖物联网场景下,数据量最大的结构化数据来自于养殖场栏舍的环境传感器(温度、湿度、光照、Co2、Nh3等),还有水表、电表等资源测量传感器,以及包括风机、水帘、侧窗等被控设备的开/关状态。

为了监控栏舍环境,需要对来自不同采样点的同类型传感器数据进行计算,并根据实时平均值来判断是否触发环控告警。

这些需求,归纳起来包括:

  • 高并发数据写入,每条记录都需要带时间戳;
  • 不同传感器设备需要记录的数据字段不同,希望能够针对不同设备单独建表;
  • 针对同类数据类型(譬如温度)的数据,有按照时间段(譬如 5 分钟)进行聚合查询的需求;
  • 原始数据存储要求在 3 年以上,需要支持数据压缩,以降低数据存储成本;
  • 希望可以支持物联网数据的补录;
  • 中间件平台属于生产系统,尤其是环控告警服务的时效性要求很高,对数据库厂商服务响应有一定要求。

按照每秒 2 万条的数据库写入的场景假设,针对对市面上主流的时序数据库,譬如阿里云上的 InfluxDB、以及国内的 TDengine 进行了 POC 验证。

出于以下几方面原因,最终选择了 TDengine Database。

  • TDengine 的设计理念(超级表 + 子表)更吻合养殖行业物联网大数据的需求,更符合我们原来的业务设计理念,譬如我们把每个物模型对应的产品设置为一个超级表,每个设备就是一个子表。
  • 在数据写入、聚合函数计算效率等多个方面,TDengine 高于 InfluxDB。
  • 售后服务方面,国产数据库厂家先天具有优势。

在选型决定之后,我们对原有业务系统进行了升级改造,引入了 TDengine。

引入 TDengine 之后的业务架构

物联网中间件平台以设备为目标,围绕设备构建物模型。该平台引入了时序数据库 TDengine,实现海量设备数据的写入、查询(聚合函数),并对所有操作履历、变更记录等日志类数据全部入库,为上层的应用提供了强大的数据能力 API,消除了养殖行业各场景应用对大数据处理的顾虑。

整体架构如下图所示。

业务架构
TDengine Database

TDengine 的性能非常出色,下表为我们所做的性能测试。

TDengine Database性能测试报告

业务架构改造完成之后,截至2021年9月,累积接入到物联网中间件平台需要创建子表的对象已经接近20万,运行半年来,时序库存储容量不到200GB,普通查询响应为 23ms;以单个设备为对象的每5分钟温度曲线,响应时间为43ms。

引入TDengine之后,优异的查询性能给我们带来了很大的惊喜,极高的压缩效率,也给我们节省了大量的存储资源。

未来,我们也会尝试在更多场景应用TDengine。

关于作者:

黄冬安,深圳市哇发科技有限公司技术总监,长期从事物联网大数据开发和运维工作,是物联网中间件项目的技术负责人。当前主要在支持云浮市物联网研究院养殖监控场景的大数据平台建设工作。