云浮市(shi)物(wu)聯網研究院有限公司(si)是(shi)溫氏系企(qi)(qi)業(ye),筠(yun)誠裝(zhuang)備(bei)管理集團下屬(shu)公司(si),主要(yao)為(wei)大型養殖(zhi)業(ye)客(ke)戶提供 AIoT 物(wu)聯網服務。為(wei)了實現(xian)各廠商(shang)、各品牌相關環境控制器(qi)、傳(chuan)感(gan)器(qi)的數(shu)據接(jie)入(ru),聯合深圳市(shi)哇發科技有限公司(si),搭建了企(qi)(qi)業(ye)級的物(wu)聯網中間件平臺,專門負責設備(bei)接(jie)入(ru)、數(shu)據采集。
業務背景和痛點
在平臺建設前期,并沒有采用時序數據庫(Time-Series Database),而是采(cai)用了(le)阿里(li)云的 MySQL 實現所(suo)有傳感器數據的存儲。在設備接入量突破 6 萬,每日數據記(ji)錄超過 8000 萬條之(zhi)后(hou),平(ping)臺性(xing)能急劇(ju)下降。
根(gen)據(ju)項(xiang)目規(gui)劃,平臺要支持數(shu)(shu)十萬設備的(de)接入,之(zhi)前采用 MySQL 數(shu)(shu)據(ju)庫分表的(de)方案已(yi)經(jing)無(wu)能(neng)為力。有鑒于此(ci),基于物聯(lian)網平臺的(de)特性,規(gui)劃引入時序數(shu)(shu)據(ju)庫解決(jue)物聯(lian)網中(zhong)間件平臺在數(shu)(shu)據(ju)的(de)存儲和處理方面的(de)痛點。
為什么選擇 TDengine Database
在養殖物聯網(wang)場景下,數據(ju)量最大的(de)結(jie)構(gou)化(hua)數據(ju)來自于養殖場欄舍(she)的(de)環境傳感器(溫(wen)度、濕(shi)度、光照、Co2、Nh3等(deng)),還有水表、電表等(deng)資源測量傳感器,以及(ji)包括風機、水簾、側(ce)窗(chuang)等(deng)被控設備(bei)的(de)開(kai)/關狀態。
為了監(jian)控欄舍環境,需要對來自不同采樣點的同類型傳(chuan)感(gan)器數(shu)據進行計算(suan),并根據實時平均值來判斷(duan)是否觸發環控告警。
這些需求,歸納(na)起來包括:
- 高并發數據寫入,每條記錄都需要帶時間戳;
- 不同傳感器設備需要記錄的數據字段不同,希望能夠針對不同設備單獨建表;
- 針對同類數據類型(譬如溫度)的數據,有按照時間段(譬如 5 分鐘)進行聚合查詢的需求;
- 原始數據存儲要求在 3 年以上,需要支持數據壓縮,以降低數據存儲成本;
- 希望可以支持物聯網數據的補錄;
- 中間件平臺屬于生產系統,尤其是環控告警服務的時效性要求很高,對數據庫廠商服務響應有一定要求。
按照每秒 2 萬(wan)條的數據(ju)庫(ku)寫入的場景假設,針對對市面上主流的時序數據(ju)庫(ku),譬如(ru)阿里(li)云上的 InfluxDB、以及國內的 TDengine 進(jin)行(xing)了 POC 驗證。
出于以下幾方面原因,最終選擇(ze)了 TDengine Database。
- TDengine 的設計理念(超級表 + 子表)更吻合養殖行業物聯網大數據的需求,更符合我們原來的業務設計理念,譬如我們把每個物模型對應的產品設置為一個超級表,每個設備就是一個子表。
- 在數據寫入、聚合函數計算效率等多個方面,TDengine 高于 InfluxDB。
- 售后服務方面,國產數據庫廠家先天具有優勢。
在(zai)選型決定之后,我們對原有(you)業務系統(tong)進(jin)行了(le)(le)升級改造,引入了(le)(le) TDengine。
引入 TDengine 之后的業務架構
物(wu)聯網中間件平臺(tai)以設備(bei)為目標(biao),圍繞設備(bei)構建物(wu)模型。該平臺(tai)引入(ru)了時(shi)序(xu)數(shu)據(ju)(ju)(ju)庫 TDengine,實(shi)現(xian)海(hai)量(liang)設備(bei)數(shu)據(ju)(ju)(ju)的(de)寫入(ru)、查詢(xun)(聚合(he)函數(shu)),并對所有操作履歷、變更記錄(lu)等日(ri)志(zhi)類(lei)數(shu)據(ju)(ju)(ju)全(quan)部入(ru)庫,為上層(ceng)的(de)應(ying)用(yong)提供(gong)了強大的(de)數(shu)據(ju)(ju)(ju)能力 API,消除了養殖(zhi)行(xing)業各場景應(ying)用(yong)對大數(shu)據(ju)(ju)(ju)處理的(de)顧慮(lv)。
整體架構如下圖所(suo)示。

TDengine 的性能(neng)非常出色,下(xia)表為我們(men)所做(zuo)的性能(neng)測(ce)試。

業(ye)務架構改造完成之后,截(jie)至(zhi)2021年(nian)(nian)9月(yue),累積接入到物聯網中(zhong)間件平臺需(xu)要創建(jian)子表的對象(xiang)(xiang)已經接近20萬(wan),運行半(ban)年(nian)(nian)來,時序庫(ku)存儲容量不(bu)到200GB,普通(tong)查詢(xun)響應為 23ms;以單個設備為對象(xiang)(xiang)的每5分鐘溫度曲(qu)線,響應時間為43ms。
引入TDengine之后(hou),優異(yi)的查詢性能給我們帶來了很大的驚喜,極高(gao)的壓縮效率,也給我們節省(sheng)了大量的存儲資源。
未來(lai),我們也(ye)會嘗試在更多場景(jing)應用TDengine。
關于作者:
黃冬(dong)安,深圳市哇發科技(ji)有(you)限公(gong)司(si)技(ji)術總監(jian),長(chang)期從(cong)事物聯網(wang)大(da)數(shu)(shu)據(ju)開發和(he)運維(wei)工作,是物聯網(wang)中間件(jian)項(xiang)目的技(ji)術負責人。當前主要在支持(chi)云浮市物聯網(wang)研究院養殖監(jian)控場(chang)景(jing)的大(da)數(shu)(shu)據(ju)平臺建設工作。


























