作者:吳(wu)明(ming)敏,深度(平(ping)潭)科技
深度(平潭)科技有限公司是一家IT綜合服務提供商,致力于以工業物聯網、大數據、云計算、移動互聯為基礎進行行業軟件研發、解決方案集成及運行維護服務。公司精準把握信息化發展趨勢,重點布局工業物聯網、智能制造、智慧水務(wu)、智慧物流、智慧樓宇(yu),借助新(xin)興(xing)技(ji)術進行融合創(chuang)新(xin),構架智能化、智慧化的信息(xi)服務(wu)支撐平(ping)臺,推進中國新(xin)型工業(ye)化進程。
由邯鋼牽頭的“十三五”水(shui)專(zhuan)項“鋼鐵(tie)行業水(shui)污染全(quan)(quan)過程控(kong)制(zhi)技(ji)術(shu)系(xi)(xi)統(tong)集成與(yu)綜合(he)應用示范”課(ke)題中,我們承擔了“提高水(shui)循環利用的分質/分級供(gong)水(shui)技(ji)術(shu)、水(shui)系(xi)(xi)統(tong)優化和(he)水(shui)網絡智慧管理”的研究任務(wu),創(chuang)新開發了具有自(zi)主知識產權的“鋼鐵(tie)聯合(he)企業全(quan)(quan)過程節(jie)水(shui)減排專(zhuan)家管理系(xi)(xi)統(tong)智慧平臺(tai)”。
該項目(mu)的(de)初衷(zhong)是讓其能夠在(zai)全國范圍內適(shi)用。但是,由于在(zai)此過程中會有海(hai)量數(shu)據(ju)(ju)產生,數(shu)據(ju)(ju)的(de)實時寫(xie)入成(cheng)為一大(da)難題。同時,多種分析(xi)算法(fa)、預警(jing)報警(jing)條件、報警(jing)處理(li)流程、運行日報、綜合統(tong)計(ji)分析(xi)報表可(ke)云端(duan)動(dong)態配置、實時的(de)動(dong)態分析(xi)計(ji)算和(he)歷史大(da)量數(shu)據(ju)(ju)回(hui)測(ce)在(zai)線計(ji)算也是新的(de)技術挑戰。
在此背景下,如果想要滿足大數據采集計算需求,如何引入高效的分布式實時處理系統,如何設計平臺的計算框架,以及如何選擇適宜的時序數據庫(Time-Series Database)是我們必須要解決(jue)的問題。
在2018年(nian)開始實施這個項目時(shi),可供我們(men)選(xuan)型的(de)產品(pin)并不多(duo),基(ji)本上是(shi)工業現(xian)場的(de)實時(shi)數(shu)據(ju)庫和通用(yong)的(de)業務型數(shu)據(ju)庫。但是(shi)工業實時(shi)庫擴展能力(li)和數(shu)據(ju)安全達不到(dao)我們(men)的(de)要求,配置上需要配合驅動,這就要求我們(men)要了解(jie)一些工業現(xian)場協議,成本相對(dui)較高;如果使用(yong)如MySQL一般的(de)通用(yong)數(shu)據(ju)庫,隨著監控點增加,按照(zhao)(zhao)時(shi)間對(dui)表(biao)進行水平劃分容易出現(xian)數(shu)據(ju)熱(re)點問題,而按照(zhao)(zhao)監測(ce)點hash取模(mo)進行劃分時(shi),擴展又(you)會變(bian)得比較困難。
后來,我們也嘗試了Kafka+Strom+HDFS這個組合,并且已經完成開發,但是隨著業務的不斷發展,在每天要處理將近一億條數據的情況下:實時和歷史數據的讀取、開發優化、數據一致性、部署運維的成本都變得越來越高。
如何才能以低成本達成高性能?選型迫在眉睫
針對以上業務場(chang)景和痛點,我們決定更換(huan)數據方案、進行(xing)產品選型,并優先(xian)對比了物聯網(wang)云平臺(tai)和時序數據庫。
選型數據量參考如下:

物聯網云平臺的優點是為能夠數據開發者提供一站式服務,有效降低開發門檻、縮短開發周期,其缺點也非常顯著,雖然說在接入以后零代碼更加方便了配置,但前期設備廠商還需要針對平臺接口進行適配就不是很友好了,平臺的費用加上實時流式計算按次收費的方式,成本瞬間提(ti)升。此外,在我們的業務中,由(you)于業主要(yao)求生產數據不離廠,離線部署(shu)成本高、運維難且現場(chang)設備多樣協議繁多,還(huan)需要(yao)定(ding)制接口。
其次(ci)就(jiu)是(shi)時(shi)序(xu)數(shu)據庫,由于市面上產品種(zhong)類眾多(duo),我們就(jiu)從自身(shen)的需求出發(fa),對兩款市面流(liu)行的時(shi)序(xu)數(shu)據庫進行了(le)相(xiang)關調研(yan),分別是(shi)InfluxDB和TDengine。前者雖然市場占有(you)率相(xiang)對較高(gao),但非常可惜其社區(qu)版集群(qun)功能并(bing)未(wei)開源,不能完全滿足我們的業務需求。而TDengine盡管相(xiang)對比較“年輕”,卻能夠保障(zhang)在提(ti)供高(gao)性能的同時(shi)也(ye)極大(da)降低安裝、部(bu)署和維護的成本,此(ci)外(wai)它(ta)還具備如(ru)下特點:
- 安裝簡單
- 集群功能開源
- 從時序數據的特點出發,設計了創新的超級表概念
- 具有豐富的函數,還有支持窗口查詢和連續查詢等諸多優勢
經過認(ren)真測試(shi)和對(dui)比后,最(zui)終我們決(jue)定將TDengine Database接入到水處理(li)專業化(hua)運維系(xi)統中進行后期改造,而TDengine也沒有辜(gu)負我們的期望(wang),幫助我們達成了降本增效的目標(biao)。
TDengine中間性試驗信息如下表所示(shi):

面對海量數據,TDengine能力如何?
下面我(wo)們一起來看一下TDengine Database在業(ye)務實踐(jian)中的具體表現。
首先我們根(gen)據(ju)業務類型,創建了5張超(chao)級表,數(shu)據(ju)量比較大的(de)兩張表結構如(ru)下:



這兩張(zhang)表(biao)的數(shu)據(ju)(ju)量達到(dao)了25億以上(shang),加(jia)上(shang)其余超(chao)級表(biao)后總(zong)數(shu)據(ju)(ju)行數(shu)大概在26億左右。

對超級表hgengine查詢所有設備的最新狀態值,TDengine的耗時是0.23s。這里不得不提一下,由(you)于我們是2.0.7的舊版(ban)本,距今(jin)已經(jing)1年之久,很多(duo)函數都沒(mei)有緩存之類的優化(hua),所(suo)以(yi)(yi)性能和(he)新版(ban)差距很大。但是由(you)于項目(mu)穩定(ding)運行很久了,所(suo)以(yi)(yi)就一直都沒(mei)有升級到最(zui)新版(ban)本體驗,十分遺憾。


接下(xia)來我(wo)們看(kan)一下(xia)存儲(chu),TDengine在以(yi)上數(shu)據量之下(xia)(26億(yi)行),占用的(de)磁(ci)盤(pan)空間其實只有2.8G,而(er)實際(ji)上入庫的(de)原數(shu)據大(da)小應為(26億(yi)行,每行包含時間戳列(lie)8字節以(yi)及float和(he)double混搭大(da)概4.2字節,總共317億(yi)字節)30G左右,TDengine的(de)列(lie)式存儲(chu)壓縮率可以(yi)達到驚人的(de)10%。
但更重要的(de)(de)是,由于TDengine的(de)(de)超級(ji)(ji)表特性,我們還從結構上省下(xia)了26億行的(de)(de)標簽數(shu)據(ju),想(xiang)象一下(xia)如果hgengine表的(de)(de)每一行數(shu)據(ju)都還要帶(dai)上這幾個(ge)數(shu)據(ju)(type,sendorid,opcid,合計436字(zi)節),那這個(ge)表的(de)(de)原本數(shu)據(ju)量直接就會達到TB級(ji)(ji)別(bie),就算壓縮率再好也要占用百G級(ji)(ji)別(bie)的(de)(de)存儲。
所以,TDengine從根(gen)(gen)源下手,把(ba)設備(bei)(bei)的靜態數據抽(chou)取(qu)出來做(zuo)為子表的一(yi)條(tiao)標簽放在了(le)(le)內存中。從根(gen)(gen)本(ben)上就解(jie)決(jue)了(le)(le)這(zhe)一(yi)物(wu)聯網大數據場景(jing)下的典(dian)型問題。最(zui)終(zhong),磁盤只(zhi)用了(le)(le)2.8G。我們準備(bei)(bei)的1.8T磁盤,目前(qian)只(zhi)用了(le)(le)千分之一(yi)。

正是在(zai)TDengine的強大助力下,我(wo)們平臺的整體(ti)運(yun)作也越來越順滑,取得了以下成效:
① 物聯全過程
基于物聯(lian)網,打通數據邊界,打破(po)工(gong)具壁壘,將整個鋼(gang)鐵園(yuan)區全(quan)(quan)過程(cheng)水系(xi)統(tong)信息匯入平臺,集(ji)成統(tong)一管理,實現全(quan)(quan)流(liu)程(cheng)一體化管控。

② 生產全監控
實(shi)時(shi)追蹤(zong)水(shui)(shui)足跡,以水(shui)(shui)流監控圖的形式(shi)對水(shui)(shui)系統的運(yun)(yun)行(xing)工(gong)況進(jin)行(xing)監控,顯示歷史和(he)實(shi)時(shi)的運(yun)(yun)行(xing)參數(shu),從而判定各指(zhi)標(biao)是(shi)否符合生產(chan)工(gong)藝(yi)要求并進(jin)行(xing)即(ji)時(shi)分析及預警報警,實(shi)現(xian)水(shui)(shui)資(zi)源的智慧(hui)化和(he)可視化管理。



③ 系統全平衡
分(fen)析水(shui)(shui)(shui)質(zhi)水(shui)(shui)(shui)量平(ping)衡,以圖表(biao)的形式即時(shi)顯示全廠(chang)、區域、用(yong)水(shui)(shui)(shui)單元三級水(shui)(shui)(shui)平(ping)衡現狀(zhuang),從而有效實現水(shui)(shui)(shui)的調(diao)度,實現水(shui)(shui)(shui)的高效分(fen)質(zhi)分(fen)級回用(yong)。

④ 管控全平臺
根據(ju)用戶需求(qiu)自動生成報表與圖(tu)表,融合(he)多因子水(shui)質水(shui)量平衡優(you)化(hua)算(suan)法,并內置專家(jia)管(guan)理模型以及(ji)相應知識庫。采(cai)用逐步趨近法漸次調節,實(shi)現了水(shui)系統的智(zhi)能化(hua)運行分(fen)析和優(you)化(hua)管(guan)理。

從高效、快捷(jie)、精準的(de)特點出發(fa),平(ping)臺以全廠、區域、水(shui)(shui)(shui)系(xi)統(tong)三級管理(li),涵蓋了(le)鋼(gang)(gang)鐵生產中各(ge)個(ge)工序的(de)用排水(shui)(shui)(shui)系(xi)統(tong)以及水(shui)(shui)(shui)處(chu)理(li)、綜合污(wu)水(shui)(shui)(shui)處(chu)理(li)系(xi)統(tong),實現(xian)了(le)鋼(gang)(gang)鐵園區全生命周期水(shui)(shui)(shui)系(xi)統(tong)運行、能源(yuan)管理(li)、環(huan)保管理(li)、數據統(tong)計分析(xi),以及廠區內水(shui)(shui)(shui)平(ping)衡調控的(de)智能化、數據化、可視化。在達成這個(ge)成就的(de)過程中,TDengine提供了(le)不小(xiao)的(de)助力。
寫在最后
在本(ben)項目中(zhong),TDengine Database可以說(shuo)是為我們(men)量身定做的(de)(de)一般,將其強(qiang)大(da)的(de)(de)性能表(biao)現體(ti)現得淋漓盡致,監(jian)控數據上報后的(de)(de)實時展示、計算(suan)分析、歷史回溯(su)都(dou)非常快(kuai)。更(geng)(geng)(geng)優秀的(de)(de)是其學習和運維成本(ben)卻并不高,為我們(men)整個項目的(de)(de)完美運作提供了強(qiang)大(da)助力(li)。未(wei)來(lai),希望TDengine能夠開發出更(geng)(geng)(geng)多更(geng)(geng)(geng)好的(de)(de)優質特(te)性,也希望我們(men)能夠和TDengine展開更(geng)(geng)(geng)多更(geng)(geng)(geng)深層次的(de)(de)合作。


























