在眾多的開源物聯(lián)網(wǎng)平臺項目中,Thingsboard在體系架構(gòu)先進性、功能完整性、文檔完備性方面,應(yīng)是首屈一指。但其自身存在的一些短板,直接影響到市場應(yīng)用的普及。我們艾瑞博達團隊,跟進ThingsBoard項目已達四年之久,對其代碼和特性進行了深入研究,而且在項目應(yīng)用中,對其進行了必要的改進和擴充。在此,我們將用一組系列文章,分享我們的實踐經(jīng)驗。希望與感興趣的業(yè)界同仁展開交流與合作。 1、優(yōu)勢特點1.1、微服務(wù)架構(gòu)從V2.2.0開始支持微服務(wù),逐漸將傳輸協(xié)議(MQTT、HTTP、CoAP)代理服務(wù)、規(guī)則引擎服務(wù)從核心服務(wù)中分離出來,保證在高并發(fā)接入情況下的分布式部署和性能調(diào)優(yōu)。 1.2、Actor模型Actor模型具有高并發(fā)、高容錯的特點。 自從V2.5.2開始,為了提高執(zhí)行效率,ThingsBoard擯棄了Akka的使用,采用Java自主開發(fā)了更高性能的Actor系統(tǒng)。其Actor體系架構(gòu)如下圖所示: 實現(xiàn)的Actor對象包括:
1.3、規(guī)則引擎Thingsboard仿效Node Red,自主開發(fā)的可視化規(guī)則引擎為消息處理提供了強大的功能支持。迄今,一些商業(yè)版的物聯(lián)網(wǎng)平臺均未見有相似的工具。 通過規(guī)則鏈的交互式配置,可以定義設(shè)備事件或數(shù)據(jù)的過濾、告警條件設(shè)置、跨系統(tǒng)聯(lián)動控制、數(shù)據(jù)路由設(shè)定等業(yè)務(wù)邏輯,只需要編寫簡單Javascript腳本。 缺省提供了常用的功能節(jié)點。遇有特殊需求時,可動態(tài)擴充。 規(guī)則引擎主要應(yīng)用場景包括:
1.4、數(shù)據(jù)可視化Thingsboard提供了豐富的數(shù)據(jù)可視化Widget,包括:地圖、儀表盤、卡片、圖表等。 通過交互式掛接數(shù)據(jù)源,便可借助WebSocket實現(xiàn)數(shù)據(jù)展現(xiàn)的實時刷新。相比Grafana,具有更好的實時性。 1.5、多協(xié)議支持ThingsBoard Server起初就提供了MQTT、HTTP、CoAP三種傳輸協(xié)議的服務(wù)端代理。近期發(fā)布的V3.30版本,又增加了LwM2M及SNMP協(xié)議的支持。 ThingsBoard Gateway是迄今為止,同類開源項目中接入?yún)f(xié)議支持最為豐富的網(wǎng)關(guān)。 ThingsBoard Gateway通過MQTT協(xié)議接入ThingsBoard Server,通過各種主流協(xié)議連接器接入現(xiàn)場設(shè)備、系統(tǒng)或數(shù)據(jù)。目前支持的協(xié)議包括:MQTT、HTTP(S)、OPC-UA、ModBus、BACnet、CAN、SNMP、BLE、ODBC等。針對特殊協(xié)議,也支持定制連接器。iRay.iot網(wǎng)關(guān)支持RPC請求,以實現(xiàn)反向控制。 ThingsBoard Gateway提供基于內(nèi)存或本地文件兩種方式的數(shù)據(jù)緩存機制,用于連接中斷時,暫存數(shù)據(jù),當連接恢復(fù)時,自動將數(shù)據(jù)上傳到服務(wù)器。 ThingsBoard Server提供網(wǎng)關(guān)的遠程配置管理服務(wù),允許用戶將配置腳本遠程下發(fā)給指定網(wǎng)關(guān)。 2、不足之處2.1、系統(tǒng)管理問題ThingsBoard(CE)版的系統(tǒng)管理是針對遠程設(shè)備管理平臺的定位而設(shè)計的。每個租戶對應(yīng)一個設(shè)備廠商,一個廠商可以有多個客戶,每個客戶可以有多個用戶。具體的設(shè)備管理是賦權(quán)給客戶和用戶的。這種管理機制不適合企業(yè)內(nèi)部應(yīng)用場景。而且缺乏靈活的授權(quán)控制功能,許多權(quán)限都寫死在代碼之中。 2.2、時序數(shù)據(jù)存儲組織問題ThingsBoard(CE)版迄今沒有導(dǎo)入專業(yè)的時序數(shù)據(jù)庫應(yīng)用,用戶可選擇的只有PostgreSQL和Cassandra。雖然針對PostgreSQL引入了TimeScale插件,但由于其不是按照寬表的方式組織數(shù)據(jù)記錄,TimeScale的優(yōu)勢根本發(fā)揮不出來??傊?,這兩種數(shù)據(jù)庫不具備高效的數(shù)據(jù)吞吐能力。 而且,Thingsboard(CE)版在數(shù)據(jù)入庫時,是將設(shè)備的多個遙測值拆分成不同的記錄。不斷增加了數(shù)據(jù)冗余量,而且非常不便于使用。 2.3、Asset的歧義性問題ThingsBoard(CE)版引入了Asset(資產(chǎn))的概念,這造成了嚴重的概念混淆,因為設(shè)備也是資產(chǎn)。它的Asset應(yīng)理解為相關(guān)聯(lián)的設(shè)備集合,而且這個集合也具有單個設(shè)備的特性。 2.4、告警條件配置問題ThingsBoard(CE)版提供了交互式復(fù)雜告警條件配置功能,由于界面邏輯設(shè)計的問題,對于多條件配置容易出現(xiàn)混亂。 2.5、前端框架選用問題ThingsBoard(CE)版采用Angular.js作為前端開發(fā)框架,對于普遍使用Vue.js的國內(nèi)程序員,造成了嚴重的水土不服。直接影響到了其市場接受度。 2.5、重要功能閉源的問題ThingsBoard團隊為了獲取經(jīng)濟收益,推出了閉源的專業(yè)版,某些重要的功能模塊只存在于專業(yè)版之中,包括:
? 分析設(shè)備數(shù)據(jù)的圖譜、輪廓及趨勢 ? 預(yù)斷系統(tǒng)行為并提前做出響應(yīng) ? 定義KPI因子,動態(tài)監(jiān)察并發(fā)現(xiàn)其影響作用 ? 監(jiān)視設(shè)備停留在各種狀態(tài)上的時間 ? 以不同的維度過濾、組合、聚合時序數(shù)據(jù) ? 通過可視化儀表板展現(xiàn)分析結(jié)果 3、我們所做的改進針對ThingsBoard(CE)版存在的問題,艾瑞博達團隊利用自己的應(yīng)用框架對其進行了整合封裝,并進行了必要的功能擴充,顯著提升了其性能和可用性。 詳細參見: 關(guān)鍵的改進包括: (1)應(yīng)用框架 我們基于SpringCloud和SpringBoot開發(fā)了一套企業(yè)級的多租戶應(yīng)用框架,將ThingsBoard的租戶與我們的租戶相對應(yīng)。完全接管了ThingsBoard的設(shè)備配置、組織機構(gòu)和用戶管理、角色與授權(quán)控制。 前端采用Vue.js,將ThingsBoard的復(fù)雜界面(規(guī)則引擎、儀表板等)用iFrame方式進行集成。 (2)導(dǎo)入TDEngine應(yīng)用 經(jīng)過嚴格比選,我們最終確定選用TDEngine替換Cassandra用于存儲時序數(shù)據(jù),數(shù)據(jù)記錄以測控點為單位進行組織。有效提高了數(shù)據(jù)存儲的效率。 (3)引入測控點和測控域概念 借鑒工控系統(tǒng)的理念,用測控點和測控域分別替換了ThingsBoard的設(shè)備(Device)和資產(chǎn)(Asset),同時導(dǎo)入了成套系統(tǒng)的概念,使復(fù)雜系統(tǒng)的數(shù)據(jù)組織更嚴謹和清晰。 (4)TCP/UDP支持 增加了TCP/UDP服務(wù)代理和緊湊格式數(shù)據(jù)解析與打包機制,使TCP/UDP協(xié)議支持成為可能。 (5)HMI的支持 在工業(yè)級物聯(lián)網(wǎng)應(yīng)用中,HMI是必要選項。我們通過集成開源項目Fuxa,實現(xiàn)了SVG圖形交互界面設(shè)計和運行時監(jiān)控執(zhí)行的HMI引擎。 (6)改進的告警條件配置 使用思維導(dǎo)圖的方式簡化告警條件的展示,對復(fù)雜的告警條件也能直觀快捷的配置,同時整個配置方式也更加具有邏輯性。 (7)規(guī)則節(jié)點新增與改造 新增了保存遙測數(shù)據(jù)到TDengine和類型轉(zhuǎn)換節(jié)點,改造了發(fā)送短信節(jié)點,使其支持騰訊云、阿里云短信平臺。 (8)視頻監(jiān)控支持 增加了視頻流及云臺Widget,支持在儀表板中添加實時視頻流及云臺控制功能。通過集成Kurento+OpenCV,實現(xiàn)了視頻流的實時轉(zhuǎn)碼和識別計算。 (9)與資產(chǎn)管理和三維可視化系統(tǒng)相結(jié)合 在艾瑞博達的產(chǎn)品體系之中,將企業(yè)級的資產(chǎn)管理系統(tǒng)作為基礎(chǔ)支撐,物聯(lián)網(wǎng)和三維可視化是資產(chǎn)管理的智慧化輔助。通過將資產(chǎn)項與測控點動態(tài)數(shù)據(jù)和GIS/BIM三維空間數(shù)據(jù)進行動態(tài)綁定,從而實現(xiàn)資產(chǎn)管理的動態(tài)化、可視化和智能化。 (10)微服務(wù)監(jiān)控 使用SkyWalking來進行服務(wù)的APM監(jiān)控,提供了分布式追蹤和上下文傳輸、應(yīng)用、實例、服務(wù)性能指標分析、根源分析、應(yīng)用拓撲分析、應(yīng)用和服務(wù)依賴分析、慢服務(wù)檢測功能。使用Prometheus+Grafana實現(xiàn)了服務(wù)器監(jiān)控、應(yīng)用監(jiān)控、Postgresql數(shù)據(jù)庫監(jiān)控、Reids監(jiān)控、Nacos監(jiān)控、Prometheus自身監(jiān)控功能。通過大量儀表板和告警通知,使整個平臺的性能、健康的監(jiān)控及運維直觀方便。 |
|
來自: 艾瑞博達 > 《物聯(lián)網(wǎng)》