數(shù)據(jù)湖存儲如何加速?你知道嗎?
你是一個程序員,你寫的代碼可能沒你想象的重要,廠里真正重要的其實是數(shù)據(jù)。不管是像數(shù)據(jù)表這樣的結(jié)構(gòu)化數(shù)據(jù),還是視頻這類非結(jié)構(gòu)化數(shù)據(jù),又或是 json 這樣的半結(jié)構(gòu)化數(shù)據(jù),都會被存到對象存儲中,不同廠商的對象存儲叫法不同,比如在騰訊云它叫 COS。它成本低,擴展性高,不少大廠用它來存儲海量數(shù)據(jù),構(gòu)成所謂的數(shù)據(jù)湖。
基于COS對象存儲構(gòu)成數(shù)據(jù)湖
但數(shù)據(jù)不能光存著,還得被各種服務(wù)器讀寫。
那么問題就來了,對象存儲很好,但它在某些場景下會存在一些問題,比如 在小文件頻繁讀寫的場景下,吞吐量上不去,延時還會變高。
怎么解決這些問題呢?
我們可以找大廠抄作業(yè)!
沒有什么是加一層中間層不能解決的,如果有,那就再加一層。這次我們要加的中間層是GooseFS。
GooseFS是什么
GooseFS 是什么
GooseFS 是騰訊云在海量數(shù)據(jù)讀寫場景下,推出的一套高性能、高可用的數(shù)據(jù)加速服務(wù)。
在廠里,我們通常會基于對象存儲構(gòu)建存儲集群,每一臺存儲數(shù)據(jù)的服務(wù)器就是一個存儲節(jié)點,這些存儲節(jié)點分布在同個城市的不同機房內(nèi),以實現(xiàn)彈性擴展和高可用容災(zāi)。而負(fù)責(zé)讀取數(shù)據(jù)進(jìn)行計算工作的服務(wù)器,則稱為計算節(jié)點,這些計算節(jié)點一般跟隨業(yè)務(wù)部署在指定的機房內(nèi)。像這種存儲跟計算節(jié)點互相分離的架構(gòu)模式,就是所謂的存算分離架構(gòu)。
存算分離架構(gòu)
GooseFS 本質(zhì)上是計算節(jié)點和存儲節(jié)點之間的一個中間層。它通過一系列優(yōu)化手段,將熱點數(shù)據(jù)調(diào)度到靠近計算端節(jié)點的位置,加速數(shù)據(jù)的獲取過程。我們來看下具體做了哪些優(yōu)化。
GooseFS是中間層
計算端緩存
我們知道本地SSD盤的訪問速度比機械磁盤要快,而對象存儲的數(shù)據(jù)主要存放在機械磁盤上,為了提升計算節(jié)點獲取數(shù)據(jù)的性能,我們很容易想到可以將對象存儲的數(shù)據(jù)放到本地SSD盤上。巧了!騰訊的大佬們也是這么想的。GooseFS將計算節(jié)點的本地盤作為緩存介質(zhì),存放部分來自對象存儲的數(shù)據(jù),這樣可以減少讀數(shù)據(jù)的延遲。
為了最大化利用計算節(jié)點的緩存資源,同時保證數(shù)據(jù)一致性,GooseFS 將這層緩存設(shè)計成了分布式緩存,它分為 Master 和 Worker 兩部分。Master 負(fù)責(zé)管理緩存文件元數(shù)據(jù)和集群狀態(tài),而 Worker 則負(fù)責(zé)實際緩存數(shù)據(jù)。并且 Master 還能根據(jù)一定策略,調(diào)整 Worker 內(nèi)部緩存數(shù)據(jù)的粒度大小和淘汰邏輯,提升緩存空間利用率。
計算節(jié)點加入基于SSD的一致性緩存
存儲端緩存
計算端緩存能夠帶來最極致的讀性能,但有些計算節(jié)點并沒有本地盤,但又需要這種分布式緩存機制,怎么辦呢?
在云計算數(shù)據(jù)中心里,有很多服務(wù)器類型:有些專注于CPU計算任務(wù),有些側(cè)重于GPU計算能力,還有些專為高性能讀寫的SSD存儲設(shè)計,同時也提供了高性價比的HDD存儲選項。如果我們能將這些SSD存儲服務(wù)器集結(jié)起來,是不是可以構(gòu)建一個分布式緩存系統(tǒng)呢?
GooseFS通過服務(wù)托管的能力,可以輕松駕馭這些SSD存儲集群,為計算節(jié)點提供存儲端的緩存支持。盡管數(shù)據(jù)從計算節(jié)點傳輸?shù)竭@些SSD存儲集群的距離,相較于本地盤略遠(yuǎn),但這依然比傳統(tǒng)的機械磁盤速度要快得多。大量數(shù)據(jù)從COS對象存儲底層的機械磁盤先緩存到這些由GooseFS管理的SSD存儲集群中,通過硬件介質(zhì)優(yōu)化和數(shù)據(jù)本地性,能夠顯著提高整個系統(tǒng)的性能。
存儲節(jié)點中加入ssd作為緩存
元數(shù)據(jù)集群
我們知道文件是有文件名、大小、創(chuàng)建時間、權(quán)限這些屬性的,它們又叫元數(shù)據(jù)。對象存儲的設(shè)計,更側(cè)重于文件數(shù)據(jù)的持久性和可擴展性,而不是快速的元數(shù)據(jù)訪問。因此在高并發(fā)讀寫元數(shù)據(jù)的場景下會出現(xiàn)瓶頸。
元數(shù)據(jù)讀寫存在瓶頸
有解法嗎?
有!GooseFS自研了一套高性能元數(shù)據(jù)引擎,通過元數(shù)據(jù)分級管理、強一致性緩存和平行擴展等技術(shù)手段來提升元數(shù)據(jù)讀寫性能,并將元數(shù)據(jù)持久化到底層的企業(yè)級數(shù)據(jù)庫中,以此大幅提升了元數(shù)據(jù)處理的效率。
通過元數(shù)據(jù)引擎提升性能
多場景適配
通過這一套組合拳,GooseFS 補齊了對象存儲在小文件頻繁讀寫等 IO 場景下的劣勢,還提升了大文件和元數(shù)據(jù)讀寫的性能和吞吐量。作為計算節(jié)點和存儲節(jié)點的中間層,起到了"上承計算,下啟存儲"的作用,相比直接讀寫 COS 上的數(shù)據(jù),GooseFS 能夠為上層計算節(jié)點帶來十倍以上的性能提升,生產(chǎn)效率拉滿。
除了對象存儲,還能支持 HDFS 等多種云存儲,完美適配多種生態(tài)應(yīng)用場景。
GooseFS支持多種存儲
你可以從 GooseFS 看到很多工程架構(gòu)設(shè)計的巧思,這么強悍,活該它入選了存儲國際頂會NAS 2024,成為業(yè)界關(guān)注的焦點。