云浮市物聯(lián)網(wǎng)研究院有限公司是溫氏系企業(yè),筠誠裝備管理集團下屬公司,主要為大型養(yǎng)殖業(yè)客戶提供 AIoT 物聯(lián)網(wǎng)服務(wù)。為了實現(xiàn)各廠商、各品牌相關(guān)環(huán)境控制器、傳感器的數(shù)據(jù)接入,聯(lián)合深圳市哇發(fā)科技有限公司,搭建了企業(yè)級的物聯(lián)網(wǎng)中間件平臺,專門負(fù)責(zé)設(shè)備接入、數(shù)據(jù)采集。
業(yè)務(wù)背景和痛點
在平臺建設(shè)前期,并沒有采用時序數(shù)據(jù)庫(Time-Series Database),而是采用了阿里云的 MySQL 實現(xiàn)所有傳感器數(shù)據(jù)的存儲。在設(shè)備接入量突破 6 萬,每日數(shù)據(jù)記錄超過 8000 萬條之后,平臺性能急劇下降。
根據(jù)項目規(guī)劃,平臺要支持?jǐn)?shù)十萬設(shè)備的接入,之前采用 MySQL 數(shù)據(jù)庫分表的方案已經(jīng)無能為力。有鑒于此,基于物聯(lián)網(wǎng)平臺的特性,規(guī)劃引入時序數(shù)據(jù)庫解決物聯(lián)網(wǎng)中間件平臺在數(shù)據(jù)的存儲和處理方面的痛點。
為什么選擇 TDengine Database
在養(yǎng)殖物聯(lián)網(wǎng)場景下,數(shù)據(jù)量最大的結(jié)構(gòu)化數(shù)據(jù)來自于養(yǎng)殖場欄舍的環(huán)境傳感器(溫度、濕度、光照、Co2、Nh3等),還有水表、電表等資源測量傳感器,以及包括風(fēng)機、水簾、側(cè)窗等被控設(shè)備的開/關(guān)狀態(tài)。
為了監(jiān)控欄舍環(huán)境,需要對來自不同采樣點的同類型傳感器數(shù)據(jù)進行計算,并根據(jù)實時平均值來判斷是否觸發(fā)環(huán)控告警。
這些需求,歸納起來包括:
- 高并發(fā)數(shù)據(jù)寫入,每條記錄都需要帶時間戳;
- 不同傳感器設(shè)備需要記錄的數(shù)據(jù)字段不同,希望能夠針對不同設(shè)備單獨建表;
- 針對同類數(shù)據(jù)類型(譬如溫度)的數(shù)據(jù),有按照時間段(譬如 5 分鐘)進行聚合查詢的需求;
- 原始數(shù)據(jù)存儲要求在 3 年以上,需要支持?jǐn)?shù)據(jù)壓縮,以降低數(shù)據(jù)存儲成本;
- 希望可以支持物聯(lián)網(wǎng)數(shù)據(jù)的補錄;
- 中間件平臺屬于生產(chǎn)系統(tǒng),尤其是環(huán)控告警服務(wù)的時效性要求很高,對數(shù)據(jù)庫廠商服務(wù)響應(yīng)有一定要求。
按照每秒 2 萬條的數(shù)據(jù)庫寫入的場景假設(shè),針對對市面上主流的時序數(shù)據(jù)庫,譬如阿里云上的 InfluxDB、以及國內(nèi)的 TDengine 進行了 POC 驗證。
出于以下幾方面原因,最終選擇了 TDengine Database。
- TDengine 的設(shè)計理念(超級表 + 子表)更吻合養(yǎng)殖行業(yè)物聯(lián)網(wǎng)大數(shù)據(jù)的需求,更符合我們原來的業(yè)務(wù)設(shè)計理念,譬如我們把每個物模型對應(yīng)的產(chǎn)品設(shè)置為一個超級表,每個設(shè)備就是一個子表。
- 在數(shù)據(jù)寫入、聚合函數(shù)計算效率等多個方面,TDengine 高于 InfluxDB。
- 售后服務(wù)方面,國產(chǎn)數(shù)據(jù)庫廠家先天具有優(yōu)勢。
在選型決定之后,我們對原有業(yè)務(wù)系統(tǒng)進行了升級改造,引入了 TDengine。
引入 TDengine 之后的業(yè)務(wù)架構(gòu)
物聯(lián)網(wǎng)中間件平臺以設(shè)備為目標(biāo),圍繞設(shè)備構(gòu)建物模型。該平臺引入了時序數(shù)據(jù)庫 TDengine,實現(xiàn)海量設(shè)備數(shù)據(jù)的寫入、查詢(聚合函數(shù)),并對所有操作履歷、變更記錄等日志類數(shù)據(jù)全部入庫,為上層的應(yīng)用提供了強大的數(shù)據(jù)能力 API,消除了養(yǎng)殖行業(yè)各場景應(yīng)用對大數(shù)據(jù)處理的顧慮。
整體架構(gòu)如下圖所示。

TDengine 的性能非常出色,下表為我們所做的性能測試。

業(yè)務(wù)架構(gòu)改造完成之后,截至2021年9月,累積接入到物聯(lián)網(wǎng)中間件平臺需要創(chuàng)建子表的對象已經(jīng)接近20萬,運行半年來,時序庫存儲容量不到200GB,普通查詢響應(yīng)為 23ms;以單個設(shè)備為對象的每5分鐘溫度曲線,響應(yīng)時間為43ms。
引入TDengine之后,優(yōu)異的查詢性能給我們帶來了很大的驚喜,極高的壓縮效率,也給我們節(jié)省了大量的存儲資源。
未來,我們也會嘗試在更多場景應(yīng)用TDengine。
關(guān)于作者:
黃冬安,深圳市哇發(fā)科技有限公司技術(shù)總監(jiān),長期從事物聯(lián)網(wǎng)大數(shù)據(jù)開發(fā)和運維工作,是物聯(lián)網(wǎng)中間件項目的技術(shù)負(fù)責(zé)人。當(dāng)前主要在支持云浮市物聯(lián)網(wǎng)研究院養(yǎng)殖監(jiān)控場景的大數(shù)據(jù)平臺建設(shè)工作。



互聯(lián)網(wǎng).png)



-1.png)







證.png)


伙伴.png)
伙伴.png)
伙伴.png)



