前言
隨著云計算規(guī)模越來越大,以及物聯(lián)網(wǎng)應(yīng)用逐漸普及,在物聯(lián)網(wǎng)(AIoT)以及運維監(jiān)控(AIOps)領(lǐng)域,存在海量的時序數(shù)據(jù)需要存儲管理。以華為云監(jiān)控服務(wù)(Cloud Eye Service,CES)為例,單個Region需要監(jiān)控7000多萬監(jiān)控指標(biāo),每秒需要處理90萬個上報的監(jiān)控指標(biāo)項,假設(shè)每個指標(biāo)50個字節(jié),一年的數(shù)據(jù)將達(dá)到PB級。另以地震監(jiān)測系統(tǒng)為例,數(shù)萬監(jiān)測站點24小時不間斷采集數(shù)據(jù),平均每天要處理的指標(biāo)數(shù)據(jù)達(dá)到TB級,一年的數(shù)據(jù)同樣達(dá)到PB級,并且數(shù)據(jù)需要永久存儲。傳統(tǒng)的關(guān)系型數(shù)據(jù)庫很難支撐這么大的數(shù)據(jù)量和寫入壓力,Hadoop等大數(shù)據(jù)解決方案以及現(xiàn)有的開源時序數(shù)據(jù)庫也面臨非常大的挑戰(zhàn)。對時序數(shù)據(jù)實時交互、存儲和分析的需求,將推動時序數(shù)據(jù)庫在架構(gòu)、性能和數(shù)據(jù)壓縮等方面不斷進行創(chuàng)新和優(yōu)化。
GaussDB(for Influx)時序數(shù)據(jù)庫依靠華為在數(shù)據(jù)存儲領(lǐng)域多年的實踐經(jīng)驗,整合華為云的計算、存儲、服務(wù)保障和安全等方面的能力,大膽在架構(gòu)、性能和數(shù)據(jù)壓縮等方面進行了技術(shù)創(chuàng)新,達(dá)到了較好的效果,對內(nèi)支撐了華為云基礎(chǔ)設(shè)施服務(wù),對外以服務(wù)的形式開放,幫助上云企業(yè)解決相關(guān)業(yè)務(wù)問題。
云原生存儲與計算分離架構(gòu)
GaussDB(for Influx)接口完全兼容InfluxDB,寫入接口兼容OpenTSDB、Prometheus和Graphite。從架構(gòu)上看,一個時序數(shù)據(jù)庫集群可以分為三大組件。它們分別是:
Shard節(jié)點:節(jié)點采用無狀態(tài)設(shè)計,主要負(fù)責(zé)數(shù)據(jù)的寫入和查詢。在節(jié)點內(nèi),除了分片和時間線管理之外,還支持?jǐn)?shù)據(jù)預(yù)聚合、數(shù)據(jù)降采樣和TAG分組查詢等專為時序場景而優(yōu)化的功能。
Config集群:存儲和管理集群元數(shù)據(jù),采用三節(jié)點的復(fù)制集模式,保證元數(shù)據(jù)的高可靠性。
分布式存儲系統(tǒng):集中存儲持久化的數(shù)據(jù)和日志,數(shù)據(jù)采用三副本方式存放,對上層應(yīng)用透明。存儲系統(tǒng)為華為自研,經(jīng)過多年產(chǎn)品實踐檢驗,系統(tǒng)的高可用和高可靠性都得到了驗證。
相比InfluxDB等開源時序數(shù)據(jù)庫,采用存儲與計算分離的云原生數(shù)據(jù)庫設(shè)計具備以下優(yōu)勢:
容忍N-1節(jié)點故障,更高可用。存儲與計算分離,可以復(fù)用成熟的分布式存儲系統(tǒng),提供系統(tǒng)的極致可靠性。時序數(shù)據(jù)通常會持續(xù)高性能寫入,同時還有大量的查詢業(yè)務(wù),任何系統(tǒng)故障導(dǎo)致業(yè)務(wù)中斷甚至數(shù)據(jù)丟失都會造成嚴(yán)重的業(yè)務(wù)影響,而利用經(jīng)過驗證的成熟的分布式存儲系統(tǒng),能夠顯著的提升系統(tǒng)可靠性,降低數(shù)據(jù)丟失風(fēng)險。
分鐘級計算節(jié)點擴容,秒級存儲擴容。解除在傳統(tǒng)Shared Nothing架構(gòu)下,數(shù)據(jù)和節(jié)點物理綁定的約束,數(shù)據(jù)只是邏輯上歸宿于某個節(jié)點,使的計算節(jié)點無狀態(tài)化。這樣在擴容計算節(jié)點時,可以避免在計算節(jié)點間遷移大量數(shù)據(jù),只需要邏輯上將部分?jǐn)?shù)據(jù)從一個節(jié)點移交給另一個節(jié)點即可,可以將集群擴容的耗時從以天為單位縮短為分鐘級別。
消除多副本冗余,降低存儲成本。通過將多副本復(fù)制從計算節(jié)點卸載到分布式存儲節(jié)點,可以避免用戶以Cloud Hosting形態(tài)在云上自建數(shù)據(jù)庫時,分布式數(shù)據(jù)庫和分布式存儲分別做3副本復(fù)制導(dǎo)致總共9副本的冗余問題,能夠顯著降低存儲成本。
GaussDB(for Influx)采用云原生存儲與計算分離架構(gòu),具有支持億級時間線、極致寫入性能、低存儲成本、高性能多維聚合查詢和極致彈性擴縮容等5大特性。
支持億級時間線
在時序數(shù)據(jù)庫系統(tǒng)中,存在大量并發(fā)查詢和寫入操作,合理控制內(nèi)存的使用量顯得十分重要。開源時序數(shù)據(jù)庫VictoriaMetrics和InfluxDB在寫入數(shù)據(jù)的時間線增加到千萬級別時,進程會因內(nèi)存耗盡而OOM退出。為了避免寫入海量時間線數(shù)據(jù)導(dǎo)致內(nèi)存資源被耗盡,GaussDB(for Influx)做了如下優(yōu)化:
●在內(nèi)存分配上,大量使用內(nèi)存池復(fù)用技術(shù),減少臨時對象內(nèi)存申請,降低內(nèi)存碎片;
●在內(nèi)存回收上,實現(xiàn)算法根據(jù)內(nèi)存負(fù)載,動態(tài)調(diào)整GC頻率,加快內(nèi)存空間回收;
●在單查詢上,實行Quota控制,避免單查詢耗盡內(nèi)存;
●在緩存使用上,針對不同節(jié)點規(guī)格提供不同的最優(yōu)配置。
經(jīng)過改進,在海量時間線下,系統(tǒng)寫入性能保持穩(wěn)定,大幅超出InfluxDB開源實現(xiàn)。對于涉及海量時間線的聚合查詢,如高散列聚合查詢,查詢性能提升更為顯著。
極致寫入性能:支持每天萬億條數(shù)據(jù)寫入
相比單機模式,集群模式可以將寫入負(fù)載分散到集群中各個計算節(jié)點上,從而支持更大規(guī)模的數(shù)據(jù)寫入。GaussDB(for Influx)支持每天萬億條數(shù)據(jù)寫入,在工程實現(xiàn)上進行了以下優(yōu)化:
首先,時序數(shù)據(jù)按照時間線做Hash Partition,利用所有節(jié)點并行寫入,充分發(fā)揮集群優(yōu)勢。
其次,Shard節(jié)點采用針對寫場景優(yōu)化的LSM-Tree布局,寫WAL后確保日志持久化,再寫入內(nèi)存Buffer即可返回。
最后,數(shù)據(jù)庫多副本復(fù)制卸載到分布式存儲,降低計算節(jié)點到存儲節(jié)點的網(wǎng)絡(luò)流量。
在大規(guī)模寫入場景下,GaussDB(for influx)的寫入性能線性擴展度大于80%。
低存儲成本:只需1/20的存儲成本
在時序數(shù)據(jù)庫面對的AIOps運維監(jiān)控和AIoT物聯(lián)網(wǎng)兩個典型應(yīng)用場景中,每天會產(chǎn)生數(shù)GB甚至數(shù)TB的時序數(shù)據(jù)。如果無法對這些時序數(shù)據(jù)進行很好的管理和壓縮,那將會給企業(yè)帶來非常高的成本壓力。
GaussDB(for Influx)對數(shù)據(jù)采用列式存儲,相同類型的數(shù)據(jù)被集中存儲,更有利于數(shù)據(jù)壓縮。采用自研的時序數(shù)據(jù)自適應(yīng)壓縮算法,在壓縮前對數(shù)據(jù)進行抽樣分析,根據(jù)數(shù)據(jù)量、數(shù)據(jù)分布以及數(shù)據(jù)類型選擇最合適的數(shù)據(jù)壓縮算法。在壓縮算法上,相比原生的InfluxDB,重點針對Float、String、Timestamp這三種數(shù)據(jù)類型進行了優(yōu)化和改進。
Float數(shù)據(jù)類型:對Gorilla壓縮算法進行了優(yōu)化,將可以無損轉(zhuǎn)換的數(shù)值轉(zhuǎn)為整數(shù),再根據(jù)數(shù)據(jù)特點,選擇最合適的數(shù)據(jù)壓縮算法。
String數(shù)據(jù)類型:采用了壓縮效率更好的ZSTD壓縮算法,并根據(jù)待壓縮數(shù)據(jù)的Length使用不同Level的編碼方法。
Timestamp數(shù)據(jù)類型:采用差量壓縮方法,最后還針對數(shù)據(jù)文件內(nèi)的Timestamp進行相似性壓縮,進一步降低時序數(shù)據(jù)存儲成本。
下圖是分別采用實際業(yè)務(wù)場景的事件日志數(shù)據(jù)(數(shù)據(jù)集1)和云服務(wù)器監(jiān)控指標(biāo)數(shù)據(jù) (數(shù)據(jù)集2)與InfluxDB進行了數(shù)據(jù)壓縮效率的性能對比。
節(jié)約存儲成本并非只有數(shù)據(jù)壓縮一種辦法。針對時序數(shù)據(jù)越舊的數(shù)據(jù)被訪問的概率越低的特點,GaussDB(for Influx)提供了時序數(shù)據(jù)的分級存儲,支持用戶自定義冷熱數(shù)據(jù),實現(xiàn)數(shù)據(jù)的冷熱分離。熱數(shù)據(jù)相對數(shù)據(jù)量小,訪問頻繁,被存儲在性能更好、成本較高的存儲介質(zhì)上;冷數(shù)據(jù)相對數(shù)據(jù)量大,訪問概率低,保存時間較久,被存儲在成本較低的存儲介質(zhì)上,進而達(dá)到節(jié)約存儲成本的目的。根據(jù)實際業(yè)務(wù)數(shù)據(jù)測算,相同數(shù)據(jù)量下存儲成本僅有關(guān)系型數(shù)據(jù)庫的1/20。
高性能多維聚合查詢
多維聚合是時序數(shù)據(jù)庫中較為常見,且會定期重復(fù)執(zhí)行的一種查詢,例如AIOps運維監(jiān)控場景中查詢CPU、內(nèi)存在指定時間范圍內(nèi)的平均值。
SELECTmean(usage_cpu), mean(usage_mem) FROMcpu_info WHEREtime >= '2020-11-01T06:05:27Z' and time < '2020-11-01T18:05:27Z'? GROUPBYtime(1h), hostname |
在提升聚合查詢整體性能方面,GaussDB(for Influx) 做了如下優(yōu)化:
●采用MPP架構(gòu):一條查詢語句可以在多節(jié)點及多核并發(fā)執(zhí)行。
●向量化查詢引擎:在查詢結(jié)果數(shù)據(jù)量很大時,傳統(tǒng)的火山模型每次迭代返回一條數(shù)據(jù),存在過多的開銷導(dǎo)致性能瓶頸。GaussDB(for Influx)內(nèi)部實現(xiàn)了向量化查詢引擎,每次迭代批量返回數(shù)據(jù),大大減少了額外開銷。
●增量聚合引擎:基于滑動窗口的聚合查詢,大部分從聚合結(jié)果緩存中直接命中,僅需要聚合增量數(shù)據(jù)部分即可。
●多維倒排索引:支持多維多條件組合查詢,避免大量Scan數(shù)據(jù)。
●存儲摘要索引,加快數(shù)據(jù)查詢中過濾無關(guān)數(shù)據(jù)。
相同節(jié)點規(guī)格,GaussDB(for Influx)的聚合查詢性能是InfluxDB Enterprise的10倍,是Timescale的2到5倍。
分鐘級彈性擴縮容
在時序數(shù)據(jù)庫的運行過程中,隨著業(yè)務(wù)量的增加,常常需要對數(shù)據(jù)庫進行在線擴容,以滿足業(yè)務(wù)的要求。傳統(tǒng)數(shù)據(jù)庫中的數(shù)據(jù)存儲在本地,擴容后往往需要遷移數(shù)據(jù)。當(dāng)數(shù)據(jù)量達(dá)到一定規(guī)模時,數(shù)據(jù)遷移所耗費的時間往往按天計算,給運維帶來了很大的困難。
如上圖所示,每個Database邏輯上由多個Partition組成,每個Partition獨立存儲,且都可自描述。所有Partition數(shù)據(jù)都存儲在分布式共享存儲上,數(shù)據(jù)庫Shard節(jié)點和數(shù)據(jù)沒有物理綁定關(guān)系。擴容時首先offload源節(jié)點Partition,再在目標(biāo)節(jié)點assign即可。
總結(jié)
時序數(shù)據(jù)應(yīng)該存儲在專門為時序數(shù)據(jù)進行優(yōu)化的時序數(shù)據(jù)庫系統(tǒng)中。華為云某業(yè)務(wù)從Cassandra切換到GaussDB(for Influx)后,計算節(jié)點從總共39個(熱集群18個,冷集群9個,大數(shù)據(jù)分析集群 12個)降低到了9個節(jié)點,縮減4倍計算節(jié)點。存儲空間消耗從每天1TB降低到100GB以內(nèi),縮減10倍存儲空間消耗。
GaussDB(for Influx)提供了獨特的數(shù)據(jù)存儲管理解決方案,云原生的存儲與計算架構(gòu),可根據(jù)業(yè)務(wù)變化快速擴容縮容;高效的數(shù)據(jù)壓縮能力和數(shù)據(jù)冷熱分離設(shè)計,可大幅降低數(shù)據(jù)存儲成本;高吞吐的集群,可滿足大規(guī)模運維監(jiān)控和物聯(lián)網(wǎng)場景海量數(shù)據(jù)寫入和查詢性能要求。
審核編輯:湯梓紅
-
華為
+關(guān)注
關(guān)注
215文章
34162瀏覽量
249644 -
云計算
+關(guān)注
關(guān)注
38文章
7636瀏覽量
136790 -
數(shù)據(jù)庫
+關(guān)注
關(guān)注
7文章
3716瀏覽量
64046
發(fā)布評論請先 登錄
相關(guān)推薦
評論