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說明檔案,希望對大家有所幫助,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/300055.html
標籤:其他
上一篇:sscom串口網路資料除錯器使用post方法向華為云obs桶上傳檔案和圖片
下一篇:芯片的制造程序與三大主設備
