六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫選型?

上海繁易 徐杰

2020-04-08 / ,

?小 T 導(dǎo)讀:伴隨工業(yè)物聯(lián)網(wǎng)的熱度,涉足云組態(tài)的企業(yè)越來越多。云組態(tài)是工業(yè)物聯(lián)網(wǎng)平臺的數(shù)據(jù)展示終端形式之一,是可以一站式完成終端設(shè)備數(shù)據(jù)采集、實時控制、報警推送、分組管理、組態(tài)設(shè)計等功能的物聯(lián)網(wǎng)系統(tǒng)。一個強(qiáng)大的云組態(tài)平臺,必須具備強(qiáng)大的數(shù)據(jù)處理能力,上海繁易是一家設(shè)備智能化產(chǎn)品及服務(wù)提供商,在其工業(yè)物聯(lián)網(wǎng)云組態(tài)的數(shù)據(jù)庫選型中,先后對比測試了4種方案,最終選擇了TDengine Database。

繁易云組態(tài)是基于B\S架構(gòu)的數(shù)據(jù)采集與監(jiān)視控制系統(tǒng),為客戶提供了如下方便的功能:隨時隨地查看設(shè)備運(yùn)行數(shù)據(jù)和狀態(tài),遠(yuǎn)程設(shè)置重要參數(shù);及時收到設(shè)備報警信息,查看設(shè)備歷史數(shù)據(jù);對設(shè)備進(jìn)行遠(yuǎn)程管理,記錄并查詢設(shè)備檔案和維護(hù)信息;終端客戶提供手機(jī)APP,實現(xiàn)遠(yuǎn)程設(shè)備監(jiān)控。

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫選型? - TDengine Database 時序數(shù)據(jù)庫

業(yè)務(wù)場景

云組態(tài)需要做到按照時間段對采集到的指標(biāo)(云組態(tài)稱作變量,下文全部用變量替代)進(jìn)行降采樣展示變量的值曲線圖。不同的云組態(tài)用戶會有不同的變量需要監(jiān)測,比如電力行業(yè)用戶的場景中,C相、B相電壓就是一個十分重要的變量。云組態(tài)要保證用戶能夠快速查詢出任意時間段內(nèi)的電壓變化曲線,如下圖所示:

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫選型? - TDengine Database 時序數(shù)據(jù)庫

數(shù)據(jù)庫方案選型

方案一:Apache Imapla + Kudu

Kudu是一個分布式列式存儲庫,Impala負(fù)責(zé)通過sql的方式查詢Kudu 的數(shù)據(jù)做匯總。Impala和kudu都是集群部署,至少需要4臺服務(wù)器,這個方案的缺陷如下。

1)比較耗費服務(wù)器資源,Kudu數(shù)據(jù)落盤后也存在Compaction策略,導(dǎo)致cpu會比較高。

2)寫入速度比較慢(3節(jié)點2C8G配置目前每秒寫入條目不到2萬)。

3)數(shù)據(jù)要先從kudu讀取到impala中再做計算,一旦數(shù)據(jù)過多,查詢緩慢,用戶無法忍受。

方案二:OpenTSDB + HBase

這個方案目前已經(jīng)使用的人比較多。但此方案仍有缺陷:

1)HBase集群配置要求高,需要很好的調(diào)優(yōu)。

2)OpenTSDB默認(rèn)的compaction策略每到整點都會對上一小時的數(shù)據(jù)查詢出來compact成一行,寫入到HBase,刪除原始數(shù)據(jù),這個相當(dāng)耗費cpu。即使關(guān)閉compaction,修改tsd.storage.enable_appends = true 啟用append的方式低配機(jī)器 cpu也是相當(dāng)高。

方案三:Cassandra

Cassandra是一套開源分布式NoSQL數(shù)據(jù)庫系統(tǒng)。從其他團(tuán)隊使用的情況來看,cassandra比較適合查詢小部分連續(xù)原始數(shù)據(jù),不太適合做分析,沒有降采樣等功能,要出統(tǒng)計表只能取一部分少量數(shù)據(jù)數(shù)據(jù)查詢出來后再在內(nèi)存處理出結(jié)果。這樣用戶只能看短時間內(nèi)的數(shù)據(jù)曲線,實用性不高。

方案四:TDengine

TDengine是一個簡單快捷高性能的時序數(shù)據(jù)庫(Time-Series Database),提供高性能的同時大大降低了安裝、部署、維護(hù)的成本,是當(dāng)前繁易云組態(tài)底層采用的變量數(shù)據(jù)存儲引擎。TDengine解決了我們幾個之前較為頭疼的問題。

1)安裝簡單。下載rpm包,一個命令安裝完畢即可運(yùn)行。2)性能強(qiáng)勁。測試場景:十萬張點表,每個點表1s需要存儲1條記錄。在實際測試過程中,使用http接口,采用單機(jī)4C16G的配置,8線程每次寫500條記錄,10萬條記錄寫入只需要300ms(如果使用java客戶端更快);單變量采樣查詢基本在2ms內(nèi)完成。整個測試持續(xù)了48小時,測試期間cpu在20%-30%之間,內(nèi)存維持在6G左右,寫入相當(dāng)穩(wěn)定,沒有出現(xiàn)超時。

綜合考慮,使用TDengine硬件成本和開發(fā)維護(hù)成本大大降低,寫入和查詢速度還比opentsdb等高一個級別。

下圖是TDengine Database官方性能對比圖,優(yōu)勢還是很明顯的:

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫選型? - TDengine Database 時序數(shù)據(jù)庫

數(shù)據(jù)采集和查詢方案設(shè)計

物聯(lián)網(wǎng)設(shè)備采集的數(shù)據(jù)會經(jīng)過好幾道服務(wù)處理放入消息隊列,之后經(jīng)過過濾變量等業(yè)務(wù)邏輯處理后,數(shù)據(jù)寫入TDengine Database。數(shù)據(jù)采集到存儲的流程圖如下。

從OpenTSDB到TDengine,如何做好工業(yè)物聯(lián)網(wǎng)的數(shù)據(jù)庫選型? - TDengine Database 時序數(shù)據(jù)庫

遵循TDengine Database一個數(shù)據(jù)源一張表的設(shè)計思路,我們認(rèn)為每個變量就是一個數(shù)據(jù)源,因此對每個變量會建立一張表。沒有采用一個設(shè)備一張表的原因是由于工控行業(yè)中同一個采集設(shè)備內(nèi)的變量采集周期不一定會一致,另外一個設(shè)備的變量也很多,超過100個是很普遍的現(xiàn)象,列過多,有些列又沒有數(shù)據(jù),會浪費空間。因此這里考慮使用一個變量一張表,會靈活得多。由于TDengine表名不能包含中文,需要在寫入前的預(yù)處理環(huán)節(jié)中,將變量名稱映射成TDengine表名。具體做法是使用雪花算法,每個設(shè)備id+變量名稱(云組態(tài)中這樣才能唯一確定變量)換一個雪花算法id,緩存在內(nèi)存中,持久化存儲到mongodb。這樣做就確保了變量id唯一、TDengine表名唯一,映射關(guān)系簡單。

我們使用TDengine時,需求暫時沒有涉及到過多的標(biāo)簽查詢,因此表的設(shè)計比較簡單,1張超級表和多張子表即可滿足。建立超級表的原因是方便后續(xù)多變量組合查詢。具體建表思路是:

1. 首選創(chuàng)建超級表:

CREATE TABLE IF NOT EXISTS {_tsdbSettings.DbName}.variables (ts timestamp, val float) TAGS (vkey binary(200));

2. 創(chuàng)建子表:

CREATE TABLE IF NOT EXISTS {tableName} USING {_tsdbSettings.DbName}.variables TAGS ('{tag}');

一個變量一張表,這樣做的優(yōu)勢是非常明顯的。每張表里面只存一個變量的數(shù)據(jù)即使每秒寫入一次,1個月也只有260萬條,對其作指定時間范圍的查詢,不用考慮其他變量的數(shù)據(jù),直接從時間戳索引得到想要時間范圍的數(shù)據(jù),效率很高。云組態(tài)的需求正是短時間內(nèi)有很多變量按秒存儲,保存半年左右,并且在此情況下,用戶想查詢?nèi)我庖粋€變量的歷史情況都能夠快速得到響應(yīng)。比如一開始截圖中展示的電壓變化曲線就是一個很好的例子,這在之前的解決方案中是沒有實現(xiàn)的。由于有超級表,變量名映射出來的表名也無需特意維護(hù),只需從超級表中查詢時,通過標(biāo)簽列對所感興趣的變量進(jìn)行篩選過濾即可。

總結(jié)

繁易云組態(tài)采用了TDengine Database后,節(jié)省了其他方案搭建集群的費用,并且在寫入速度和查詢性能方面完全滿足了業(yè)務(wù)的需求,運(yùn)維也是相當(dāng)簡單,沒有像HBase之類相當(dāng)多的調(diào)優(yōu)參數(shù),cpu內(nèi)存相當(dāng)穩(wěn)定。對比市面上其他開源方案,我們認(rèn)為TDengine雖然開源不到一年,但是在同類產(chǎn)品中名列前茅。希望在今后還能看到RESTful接口寫入速度進(jìn)一步提高,文檔進(jìn)一步豐富。

作者簡介:徐杰,八年.NET開發(fā)工程師,在物聯(lián)網(wǎng)數(shù)據(jù)處理、時序數(shù)據(jù)庫使用有深入研究。目前任職于上海繁易信息科技股份有限公司,擔(dān)任軟件研發(fā)部云組態(tài)團(tuán)隊技術(shù)負(fù)責(zé)人。

公司介紹:上海繁易信息科技股份有限公司是一家設(shè)備智能化產(chǎn)品及服務(wù)提供商。面向工業(yè)自動化、環(huán)保、電力、新能源等領(lǐng)域,提供智能化產(chǎn)品及工業(yè)物聯(lián)網(wǎng)軟硬件一體化解決方案,為設(shè)備制造商和終端用戶挖掘更多設(shè)備價值,提升效率、降低成本、優(yōu)化管理,推動設(shè)備制造商服務(wù)轉(zhuǎn)型。

原文首發(fā)于 https://mp.weixin.qq.com/s/QIvnn9ah-yzpT-1pKgoG7w