異構(gòu)數(shù)據(jù)存儲實戰(zhàn)
Part 01
異構(gòu)存儲架構(gòu)
數(shù)據(jù)的存儲需要根據(jù)使用場景的不同而有所不同,對于那些需要快速訪問的數(shù)據(jù)應(yīng)該存儲在高速訪問設(shè)備,并通過高性能存儲系統(tǒng)進行訪問;而那些需要進行大數(shù)據(jù)計算、歸檔處理的數(shù)據(jù)則應(yīng)該存儲在廉價、低速的設(shè)備中,通過分布式的方式來計算。
異構(gòu)存儲架構(gòu)是一種多存儲設(shè)備的系統(tǒng)架構(gòu),通過對數(shù)據(jù)進行自動化管理,根據(jù)其訪問頻率等指標(biāo),將數(shù)據(jù)劃分為冷數(shù)據(jù)和熱數(shù)據(jù),進而控制其存儲在不同的設(shè)備上,達到優(yōu)化性能,降低存儲成本的目的。
Part 02
異構(gòu)存儲面臨地挑戰(zhàn)
在異構(gòu)數(shù)據(jù)存儲增強中,主要面臨以下幾個核心問題:
1?? 如何選擇合適的存儲介質(zhì)?
存儲介質(zhì)既要滿足性能、成本需求,同時還要滿足可靠性、可用性、容量可擴展、運維簡單等需求。
2?? 如何定義業(yè)務(wù)的冷熱數(shù)據(jù),并且在存儲介質(zhì)中進行分層?
在業(yè)務(wù)上,如何描述哪部分是熱數(shù)據(jù),哪部分是冷數(shù)據(jù),是在產(chǎn)品層面上需要考慮的問題。
3?? 冷熱數(shù)據(jù)如何遷移?
隨著時間流逝,業(yè)務(wù)上的熱數(shù)據(jù)降溫為冷數(shù)據(jù)后,存儲介質(zhì)如何感知溫度的變化并執(zhí)行數(shù)據(jù)遷移來降低存儲成本。
4?? 如何提高冷數(shù)據(jù)的訪問性能?
冷數(shù)據(jù)仍然會被訪問,比如數(shù)據(jù)運營分析要求,用戶需對過去一年的數(shù)據(jù)進行統(tǒng)計分析來進行歷史回顧和趨勢分析。由于冷數(shù)據(jù)體量大,查詢涉及的數(shù)據(jù)多,存儲介質(zhì)性能低,如果不進行優(yōu)化,對冷數(shù)據(jù)的元信息以及內(nèi)容訪問可能出現(xiàn)瓶頸影響業(yè)務(wù)使用。
Part 03
冷熱數(shù)據(jù)識別
通過定義識別策略,例如訪問頻率、數(shù)據(jù)大小、最近訪問時間,這些因素用來輔助異構(gòu)存儲系統(tǒng),成為判別冷熱數(shù)據(jù)的指標(biāo)。
- 數(shù)據(jù)訪問的頻繁度。即在一段時間內(nèi)對一個數(shù)據(jù)訪問越多,我們就越將其定義為熱數(shù)據(jù)。
- 數(shù)據(jù)大小。一般數(shù)據(jù)體積較大的數(shù)據(jù)是不能作為熱數(shù)據(jù)的,如果訪問頻率很高,需要考慮將其進行拆分,分多個維度進行讀取,而不是作為一個整體進行存儲。
- 數(shù)據(jù)訪問的時效性。即訪問的數(shù)據(jù)越接近當(dāng)前時間點,我們也會將其定義為熱數(shù)據(jù)。因為大多數(shù)應(yīng)用場景都具備空間和時間上的局部性,當(dāng)前訪問的數(shù)據(jù),接下來被訪問的概率要相對大一些。
Part 04
異構(gòu)數(shù)據(jù)遷移
在將數(shù)據(jù)塊按照存儲策略遷移時,通過將數(shù)據(jù)進行自動分析,結(jié)合策略對數(shù)據(jù)進行數(shù)據(jù)壓縮、小文件合并,同時針對平臺級數(shù)據(jù)進行自動備份和遷移,達成業(yè)務(wù)無感知。
分池存儲的核心是數(shù)據(jù)在不同存儲層之間的流動, 其主要解決的問題是不同介質(zhì)間性能與容量差異,數(shù)據(jù)遷移的因素主要包括:存儲池空間水位,數(shù)據(jù)冷熱特性,手動遷移數(shù)據(jù)等。
寫緩存:通常情況下,前端數(shù)據(jù)首先寫入SSD層即返回,滿足用戶對于高吞吐低延遲的需求,隨后數(shù)據(jù)在后臺被遷移到HDD層,整個過程對于用戶無感知。在吞吐實測過程中,SSD+HDD集群基本同時兼顧了SSD的性能和HDD的容量,成本顯著低于SSD集群;
讀緩存:由高低速介質(zhì)容量配比決定,大部分數(shù)據(jù)最終被寫入HDD層。根據(jù)數(shù)據(jù)局部熱點特性,高速層會同時會成為讀緩存,具體而言,系統(tǒng)根據(jù)數(shù)據(jù)冷熱特性盡量將熱點數(shù)據(jù)遷移至高速設(shè)備,最大程度上提升讀性能。