如何将TDengine集成到Thingsboard?

Posted 艾瑞博达科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将TDengine集成到Thingsboard?相关的知识,希望对你有一定的参考价值。

1 概述

ThingsBoard是用于数据收集、处理、可视化和设备管理的开源物联网平台。它通过行业标准的物联网协议MQTT、CoAP和HTTP实现设备连接,并支持云和本地部署。

ThingsBoard迄今没有导入专业的时序数据库应用,用户可选择的只有PostgreSQL和Cassandra。虽然针对PostgreSQL引入了TimeScale插件,但由于其不是按照宽表的方式组织数据记录,TimeScale的优势根本发挥不出来。总之,这两种数据库不具备高效的数据吞吐能力。

而且,Thingsboard在数据入库时,是将设备的多个遥测值拆分成不同的记录。不断增加了数据冗余量,而且非常不便于使用。

TDengine是涛思数据专为物联网设计和优化的时序数据库。其具有高性能、高可靠、可伸缩、零管理、简单易学等技术特点,提供缓存、数据订阅、流式计算等功能,最大程度减少研发和运维的复杂度。

TDEngine的主要功能特点包括:

  • 类SQL查询语言来插入或查询数据
  • 支持C/C++, Java(JDBC), Python, Go, RESTful, and Node.JS 等开发接口
  • 通过TDengine Shell或Python/R/Matlab可做各种Ad Hoc查询分析
  • 通过连续查询,支持基于滑动窗口的流式计算
  • 引入超级表,让设备之间的数据聚合通过标签变得简单、灵活
  • 内嵌消息队列,应用可订阅最新的数据
  • 内嵌缓存机制,每台设备的最新状态或记录都可快速获得
  • 无历史数据与实时数据之分
  • 安装包仅2.7M

我们通过改造ThingsBaord的JDBC驱动包和新增“保存遥测数据(TDengine)”规则节点,成功用TDEngine替换Cassandra。同时,数据记录以测控点为单位进行组织,有效克服了ThingsBoard时序数据高并发瓶颈问题。

本文主要介绍如何将TDengine集成到ThingsBoard,并进行压力测试。

2 安装部署

2.1 安装TDengine

TDengine软件分为服务器、客户端模块两部分,目前2.0版服务器仅能在Linux系统上安装和运行。客户端可以在Windows或Linux上安装和运行。最新版为:2.0.20.12,这里我们选择2.0.14.0版本。

  • 安装客户端

在Windows环境安装户端,使用安装包快速安装。下载链接:
https://www.taosdata.com/cn/all-downloads/#TDengine-Windows-Clienttaos.dll 在 Windows 系统中安装完客户端之后,驱动包依赖的 taos.dll 文件会自动拷贝到系统默认搜索路径 C:/Windows/System32 下,不需要单独指定。

  • 安装服务器

在Linux环境安装服务器,使用docker安装

docker run -d -v /home/taos/etc:/etc/taos -v /home/taos/lib:/var/lib/taos -v /home/taos/log:/var/log/taos -p 6030:6030 -p 6035:6035 -p 6041:6041 -p 6030-6040:6030-6040/udp tdengine/tdengine:2.0.14.0

进入容器

docker exec -it 4866b36a465c /bin/bash

输入taos命令,如下图所示,说明安装成功

  • 注意事项

如果系统提示找不到FQDN,请参考:

https://www.cnblogs.com/taosdata/p/13690374.html

注意服务器版本与客户端版本必须一致,详细安装流程,请参考:
https://www.taosdata.com/cn/getting-started/

2.2 Thingsboard集成TDengine

新增“保存遥测数据(TDengine)”规则节点

  • 添加依赖

TDengine 为了方便 Java 应用使用,提供了遵循 JDBC 标准(3.0)API 规范的 taos-jdbcdriver 实现。在项目里面引入taos-jdbcdriver依赖,maven 项目中使用如下:

如果使用其它版本,Sonatype Repository 地址:
https://search.maven.org/artifact/com.taosdata.jdbc/taos-jdbcdriver

  • 修改yml文件

新增数据库连接配置

修改时序数据存储配置

  • 编码

taos-jdbcdriver 的实现包括 2 种形式: JDBC-JNI 和 JDBC-RESTful。以JNI为例

  •  UI 配置

ThingsBoard规则节点UI在官方github仓库一个项目。请参考:
https://github.com/thingsboard/thingsboard-rule-config-ui-ngx

  • 编译

mvn clean install -DskipTests

3 测试

使用脚本向 thingsboard 默认的 mqtt topic (v1/devices/me/telemetry) 推送消息,使用jconsole 查看 Thingsboard 运行环境性能分析信息。

3.1 测试环境

编号

服务

版本

环境

1

Thingsboard

3.2.0

192.168.1.254 (8 核 CPU,16G 内存)

2

Postgres

13.0

192.168.1.88 (4 核 CPU,8G 内存)

3

TDengine

2.0.14

192.168.1.203 (4 核 CPU,8G 内存)

3.2 测试

创建一个测控点类型,选择数据类型,填写 key 映射关系

在“测控点管理”中创建一个测控点类型为“gateway”的测控点

复制令牌,粘贴到脚本中

使用脚本推送数据,创建5000个测控点,向每个测控点每秒推送一条数据,每条数据包含6个key

测控点创建成功

3.3 测试结果

  • 查看测控点历史数据

使用脚本推送数据频率为1条/秒,实际入库频率也为1条/秒

  • 堆内存使用量

通过jconsole查看堆内存使用情况,内存未溢出

以上为Thingsboard集成TDengine说明文档,希望对大家有所帮助。

以上是关于如何将TDengine集成到Thingsboard?的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 OpenTSDB 迁移到 TDengine?

tdengine 是不是支持使用线路协议将数据从 influxdb 传输到 tdengine

如何把数据从 TDengine 2.x 迁移到 3.x ?

Thingsboard物联网关BL101介绍

如何将 CSV 文件导入 TDengine 数据库

java项目集成taos数据库问题