其中,元數(shù)據(jù)層主要負責元數(shù)據(jù)的存取訪問服務以及事務控制。共享存儲(對象存儲)層負責用戶數(shù)據(jù)持久存儲,中間計算層為無狀態(tài)的計算服務。
當然,龍趺集群規(guī)模不斷增大,其在數(shù)據(jù)存儲和使用中也會面臨一些挑戰(zhàn)。大量應用接入數(shù)據(jù)庫,龍趺共享存儲中的文件數(shù)超過20億,而讀取訪問小文件對緩存影響極大,因此在高并發(fā)需求下規(guī)?;瘧萌绾翁嵘镜鼐彺嫦到y(tǒng)使用效率是一個挑戰(zhàn)。
服務器數(shù)量不斷增加,故障也隨之增多,資源動態(tài)調配和故障自愈能力這些操作也會帶來緩存部分失效,如何實現(xiàn)節(jié)點間緩存的共享,以此最大限度減少緩存加載對應用的影響也是挑戰(zhàn)。
以傲騰為代表的SCM助力分布式數(shù)據(jù)庫應對存儲挑戰(zhàn)
建設銀行建信金科基礎技術中心首席存儲專家徐寧表示這兩個問題可以從三個方向進行優(yōu)化——數(shù)據(jù)分布,單機性能以及格式性能。其中,存儲介質、緩存分層、文件系統(tǒng)和緩存粒度和緩存格式是基于SCM的進一步優(yōu)化。
以傲騰為代表的SCM出現(xiàn)帶來了高級數(shù)據(jù)服務能力,且具備實際價值?;旌习葱枋褂肈RAM和SCM,將存儲層的高級數(shù)據(jù)服務移植到內(nèi)存層,如高性能備份和恢復等。SCM應用可以簡化系統(tǒng)設計,SCM的內(nèi)存特性簡化軟件棧,更易于定制化實現(xiàn)需求。
比如,在做MPP計算時不需要一個文件中所有數(shù)據(jù),而是把文件里部分數(shù)據(jù)按照范圍加載到當時的計算集群緩存部分,比如上圖里的Block 1和Block 2,然后加載到具體計算機群節(jié)點上,變成兩個小文件,這是對象局部緩存的設計。
在這個前提下進行單機優(yōu)化首要考慮的是應用的SCM介質。龍趺MPP DB采用英特爾? 傲騰?持久內(nèi)存作為SCM介質替代了一部分DRAM帶來性能提高和長壽命的優(yōu)勢。
DOIT總編宋家雨指出,內(nèi)存儲器如DRAM一旦出現(xiàn)故障,系統(tǒng)需要跨內(nèi)存儲器直接訪問外存儲器,消耗大量的網(wǎng)絡和存儲資源的同時導致性能大幅降低,而通過以傲騰為主的SCM+存儲分層是將熱數(shù)據(jù)緩存到新介質上,冷數(shù)據(jù)則自動存儲到經(jīng)濟型介質上,以此找到性能,容量和成本結合點,最大限度減少緩存加載對應用的影響。
另一方面,針對海量小文件帶來的訪問性能下降,建行采用了很多辦法,比如用RocksDB取代本地文件系統(tǒng),優(yōu)化后對16KB以下的小文件取得了較大的性能提高。但是RocksDB也會帶來新問題——LSM Tree帶來的寫放大,LSM Tree分層級,每次先寫journal(日志),再寫memory table(內(nèi)存表),然后并到leve1,leve2……重復寫入和數(shù)據(jù)逐級下沉造成了嚴重的寫放大問題。
因此,建設銀行在軟件方面采用了英特爾持久內(nèi)存開發(fā)工具包PMDK(Persistent Memory Development Kit),用pmemobj庫存放較大的值,然后用戶oid直接做索引,很好地解決寫放大的問題。
以libpmem庫為例,作為PMDK中的底層庫支持用內(nèi)存映射方式訪問持久內(nèi)存,一方面可將持久內(nèi)存上的文件映射到應用的虛擬內(nèi)存空間進行操作。通過規(guī)避內(nèi)核參與和上下文切換帶來的開銷,直接為上層應用提供助力。
DOIT主編朱朋博表示,中國有句古話:勿以善小而不為。用傲騰部分替代DRAM,鑒于傲騰在容量密度和價格方面的優(yōu)勢,聚沙成塔,當服務器用量動輒上萬時,其所帶來的容量優(yōu)勢不能低估。
傲騰持久內(nèi)存的技術展望
從建設銀行的數(shù)據(jù)庫案例來看,傲騰技術的引入幫助其完善了MPP數(shù)據(jù)庫的功能,為海量數(shù)據(jù)訪問和處理提供了強有力的支撐。未來,SCM解決方案除了作為緩存層,隨著傲騰技術不斷發(fā)展,容量與性能的擴展,以及我們對內(nèi)存規(guī)模需求的不斷增加,是否會成為數(shù)據(jù)存儲的核心呢,畢竟技術新舊更迭是市場的運行規(guī)則,接下來,傲騰觀察室將投入更多的時間和精力來觀察傲騰技術的新用例和新變化,敬請期待!