0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

華為自研分布式時序數(shù)據(jù)庫集群:初始GaussDB(for Influx)

清歡科技 ? 來源:清歡科技 ? 作者:清歡科技 ? 2022-12-02 09:08 ? 次閱讀

前言

隨著云計算規(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)

poYBAGOIxhyAA-NNAACwXT4sHII952.png

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)的高可用和高可靠性都得到了驗證。

poYBAGOIxiGAQqNTAAD6nNHkdDc634.png

相比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副本的冗余問題,能夠顯著降低存儲成本。

pYYBAGOIxiaAGHWCAACTVrapZ98005.png

GaussDB(for Influx)采用云原生存儲與計算分離架構(gòu),具有支持億級時間線、極致寫入性能、低存儲成本、高性能多維聚合查詢和極致彈性擴縮容等5大特性。

支持億級時間線

poYBAGOIxiqAYsRXAACrR5MsaZc155.png

在時序數(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ù)寫入

pYYBAGOIxi-AfsfsAAB3D-o1xzs894.png

相比單機模式,集群模式可以將寫入負(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ù)壓縮效率的性能對比。

poYBAGOIxjWAGzEXAACRdZhlHqA625.png

節(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

poYBAGOIxjmAOFZPAACDqriar_8569.png

在提升聚合查詢整體性能方面,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ù)。

poYBAGOIxj2AVkPAAACQbzOSTIo590.png

相同節(jié)點規(guī)格,GaussDB(for Influx)的聚合查詢性能是InfluxDB Enterprise的10倍,是Timescale的2到5倍。

分鐘級彈性擴縮容

pYYBAGOIxkCAZnRBAACNJXv025A483.png

在時序數(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ù)寫入和查詢性能要求。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 華為
    +關(guān)注

    關(guān)注

    215

    文章

    34162

    瀏覽量

    249644
  • 云計算
    +關(guān)注

    關(guān)注

    38

    文章

    7636

    瀏覽量

    136790
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3716

    瀏覽量

    64046
收藏 人收藏

    評論

    相關(guān)推薦

    分布式云化數(shù)據(jù)庫的優(yōu)缺點分析

    分布式云化數(shù)據(jù)庫的優(yōu)點主要體現(xiàn)在高可用性和容錯性、可擴展性、體系結(jié)構(gòu)、數(shù)據(jù)一致性、成本、升級迭代等方面。同時也存在一些缺點,如通信開銷較大、數(shù)據(jù)的存取結(jié)構(gòu)復(fù)雜、
    的頭像 發(fā)表于 09-14 09:42 ?149次閱讀

    軟件系統(tǒng)數(shù)據(jù)庫的分庫分表設(shè)計

    分布式集群,實現(xiàn)分庫分表功能,解決數(shù)據(jù)庫中海量數(shù)據(jù)存儲和查詢性能的問題。MyCat 還是一個數(shù)據(jù)庫
    的頭像 發(fā)表于 08-22 11:39 ?224次閱讀
    軟件系統(tǒng)<b class='flag-5'>數(shù)據(jù)庫</b>的分庫分表設(shè)計

    基于分布式存儲WDS的金融信創(chuàng)云承載數(shù)據(jù)庫類關(guān)鍵應(yīng)用

    基于分布式存儲WDS的金融信創(chuàng)云承載數(shù)據(jù)庫類關(guān)鍵應(yīng)用
    的頭像 發(fā)表于 08-16 09:42 ?146次閱讀
    基于<b class='flag-5'>分布式</b>存儲WDS的金融信創(chuàng)云承載<b class='flag-5'>數(shù)據(jù)庫</b>類關(guān)鍵應(yīng)用

    鴻蒙開發(fā)接口數(shù)據(jù)管理:【@ohos.data.distributedData (分布式數(shù)據(jù)管理)】

    分布式數(shù)據(jù)管理為應(yīng)用程序提供不同設(shè)備間數(shù)據(jù)庫分布式協(xié)同能力。通過調(diào)用分布式數(shù)據(jù)各個接口,應(yīng)用程
    的頭像 發(fā)表于 06-07 09:30 ?733次閱讀
    鴻蒙開發(fā)接口<b class='flag-5'>數(shù)據(jù)</b>管理:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>數(shù)據(jù)</b>管理)】

    時序數(shù)據(jù)庫是什么?時序數(shù)據(jù)庫的特點

    時序數(shù)據(jù)庫是一種在處理時間序列數(shù)據(jù)方面具有高效和專門化能力的數(shù)據(jù)庫。它主要用于存儲和處理時間序列數(shù)據(jù),比如傳感器數(shù)據(jù)、監(jiān)控
    的頭像 發(fā)表于 04-26 16:02 ?537次閱讀

    HarmonyOS開發(fā)實例:【分布式手寫板】

    使用設(shè)備管理及分布式鍵值數(shù)據(jù)庫能力,實現(xiàn)多設(shè)備之間手寫板應(yīng)用拉起及同步書寫內(nèi)容的功能。
    的頭像 發(fā)表于 04-17 21:45 ?371次閱讀
    HarmonyOS開發(fā)實例:【<b class='flag-5'>分布式</b>手寫板】

    鴻蒙HarmonyOS開發(fā)實例:【分布式關(guān)系型數(shù)據(jù)庫

    使用[@ohos.data.relationalStore]接口和[@ohos.distributedDeviceManager]?接口展示了在eTS中分布式關(guān)系型數(shù)據(jù)庫的使用,在增、刪、改、查的基本操作外,還包括分布式數(shù)據(jù)庫
    的頭像 發(fā)表于 04-11 09:52 ?635次閱讀
    鴻蒙HarmonyOS開發(fā)實例:【<b class='flag-5'>分布式</b>關(guān)系型<b class='flag-5'>數(shù)據(jù)庫</b>】

    分布式鎖的三種實現(xiàn)方式

    ,下面將分別介紹三種常見的實現(xiàn)方式。 一、基于數(shù)據(jù)庫實現(xiàn)的分布式鎖 在分布式系統(tǒng)中,數(shù)據(jù)庫是最常用的共享資源之一。因此,可以通過數(shù)據(jù)庫的特性
    的頭像 發(fā)表于 12-28 10:01 ?723次閱讀

    鴻蒙原生應(yīng)用開發(fā)——分布式數(shù)據(jù)對象

    申請權(quán)限,用戶點擊授權(quán)即可賦予應(yīng)用相應(yīng)的權(quán)限啦~ 06、上手分布式數(shù)據(jù)對象代碼開發(fā) 登錄了同一華為帳號的 HarmonyOS 設(shè)備已經(jīng)默認(rèn)了進行了組網(wǎng)認(rèn)證,所以在進行分布式
    發(fā)表于 12-08 10:01

    分布式系統(tǒng)硬件資源池原理和接入實踐

    和音頻驅(qū)動信息,存入分布式數(shù)據(jù)庫。如果 AB 兩個設(shè)備建立了可信關(guān)系并且通過軟總線組網(wǎng)上線成功,分布式數(shù)據(jù)庫會在 AB 兩個設(shè)備之間自動同步各自的本地外設(shè)數(shù)據(jù)信息,這樣,設(shè)備 A 分布式
    發(fā)表于 12-06 10:02

    怎么區(qū)分分布式服務(wù)器和集群服務(wù)器?

      如何區(qū)分分布式服務(wù)器和集群服務(wù)器?許多朋友在選擇服務(wù)器時不知道分布式服務(wù)器和集群服務(wù)器的區(qū)別,所以他們不知道如何選擇它們。本文將告訴您分布式
    的頭像 發(fā)表于 11-29 15:20 ?545次閱讀

    NoSQL 數(shù)據(jù)庫如何選型

    什么是NoSQL數(shù)據(jù)庫?為什么要使用NoSQL數(shù)據(jù)庫?鍵值數(shù)據(jù)庫內(nèi)存鍵值數(shù)據(jù)庫文檔數(shù)據(jù)庫列式數(shù)據(jù)庫
    的頭像 發(fā)表于 11-26 08:05 ?364次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫</b>如何選型

    分布式數(shù)據(jù)恢復(fù)-hbase+hive分布式存儲誤刪除文件的數(shù)據(jù)恢復(fù)方案

    倉庫。 hbase+hive分布式存儲故障&初檢: 數(shù)據(jù)庫文件被誤刪除,數(shù)據(jù)庫無法使用。 通過現(xiàn)場對該分布式環(huán)境的初步檢測,發(fā)現(xiàn)虛擬機還可以正常啟動,虛擬機里面的
    的頭像 發(fā)表于 11-24 15:55 ?342次閱讀

    tldb提供分布式鎖使用方法

    前言:分布式鎖是分布式系統(tǒng)中一個極為重要的工具。目前有多種分布式鎖的設(shè)計方案,比如借助 redis,mq,數(shù)據(jù)庫,zookeeper 等第三方服務(wù)系統(tǒng)來設(shè)計
    的頭像 發(fā)表于 11-02 14:44 ?788次閱讀
    tldb提供<b class='flag-5'>分布式</b>鎖使用方法

    數(shù)據(jù)庫如何實現(xiàn)分布式

    1. 前言 分布式應(yīng)用中,有時我們需要一個方法在同一時間只能被一個線程執(zhí)行。此時我們有可能會使用到分布式鎖。 分布式鎖需要具備以下特征: 互斥性 同一時刻鎖只能被一個線程持有。 超時釋放 超時釋放
    的頭像 發(fā)表于 10-08 16:12 ?4472次閱讀