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

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

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



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



-1.png)




.png)


證.png)


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



