TDengine 助力京东云 IoT 数据统计改造

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

2014年起,京东从智能家居领域开始发力,在业界率先推出语音交互入口-叮咚智能音箱,实现了广泛的设备品类互联生态,同时整合集团内部零售、物流、大健康、工业品等关键领域的物联网技术能力,持续助力社区、城市、车联、工业等关键行业领域,广泛服务于实体经济,助力企业转型升级。本文在京东云IoT多年来行业实践经验积累的基础上,分享在数据存储方面的一些做法。

一、场景与痛点

数据是数字化时代企业的核心资产。京东云智能家居场景维护着大量的智能设备,这些设备联网后,会根据设备设定的速率持续产生时序数据,比如有的设备采样间隔是15秒。京东云IoT团队结合本公司数据特点与业务需求,对多种工业时序数据库(Time-Series Database)进行了技术选型,以解决庞大的数据存储和计算带来的挑战:

  • 数据存储具有较高的数据压缩比,节约存储资源,降低IT成本
  • 写入和查询性能优异,数据库底层逻辑的优化可以减少CPU开销
  • 支持数据预聚合,拥有丰富的计算算子
  • 强有力的稳定架构

二、技术选型

我们对两种业界主流的时序数据库做了分析和测试:

  • OpenTSDB:基于HBase的分布式、可伸缩的时间序列数据库。作为基于通用存储开发的时序数据库典型代表,起步比较早,在时序数据库领域的认可度相对较高,但HBase成本高的问题无法免除。
  • TDengine:在性能、成本、运维难度等方面都表现不俗,支持横向扩展,且高可用。

通过实际对比测试,我们初步选定TDengine Database作为数据存储方案。TDengine相比于OpenTSDB有明显的优势:

  • TDengine写入吞吐量高出200%
  • 1亿条记录平均查询时间提升100倍
  • 100万条记录读取时间提升32倍
  • 1亿条记录按时间分组取均值时间提升40倍
  • 成本开销降低2-3倍

三、数据建模

TDengine数据建模需根据数据的特性设计相应的Schema,以达到最好的性能表现。对于物联网设备而言,是围绕着设备孪生工作的。设备有对应的物类型、物模型,物模型描述了设备的属性感知和交互行为。因此,我们基于物类型、物模型进行了Schema的设计:

  • 基于物类型、物模型创建超级表
  • 数据聚合以字表为维度,按照物模型及数据特性,选择不同的聚合算子进行聚合

超级表举例如下:

超级表
TDengine Database

四、落地实施

结合业务需求与数据特点,我们采用的方案是:将设备上报的元数据存储在metadata库中,然后通过定时任务的方式,每小时以设备的维度,根据物模型,进行数据聚合,将聚合后的数据存储在statistics库中。同时为了减少数据存储的压力,将metadata的数据过期时间设置为固定时长。

落地实施
TDengine Database

五、改造效果

在与TDengine工程师沟通后, 我们只使用了3台4C16G构成的TDengine的集群,就承载了线上的业务。

数据聚合方面,根据TDengine的性能、机器配置和前期测试的时间开销,只需很短的时间就完成了全量设备的数据聚合。

改造效果
TDengine Database

CPU方面,一直很稳定,在常态下CPU低于10%,由于设备的数据聚合需要消耗大量的CPU,因此在每个整点CPU会有所上升,但是不超过45%的负载。

改造效果
TDengine Database

六、总结

通过一段时间的运行,TDengine Database在成本、性能和使用便利性方面相比OpenTSDB都有非常大的优势,实现了海量物联数据的高性能、低成本的存储。

在项目实施过程中, TDengine的工程师提供了专业、及时的帮助,在此表示感谢。希望TDengine能够继续提升性能和稳定性,开发出更多的新特性、新功能,实现更大的突破。