關(guān)于Disaggregating Persistent Memory and Controlling Them Remotely: An Exploration of Passive Disaggregated Key-Value Stores這篇論文的筆記
原文鏈接
提出背景
傳統(tǒng)的分布式存儲系統(tǒng)中,每個節(jié)點都會包含計算和存儲兩個部分,一個節(jié)點既可以訪問本地的存儲部分也可以訪問遠(yuǎn)端的存儲部分。傳統(tǒng)的存儲部分是由SSD或者HDD組成,但隨著非易失性內(nèi)存(PM:persistent memory)的提出,越來越多的存儲系統(tǒng)采用了這種存儲介質(zhì)。形成的組織架構(gòu)如下圖所示:
存在的問題
-
在單個節(jié)點中,計算和存儲之間存在著處理速度方面的差異,無法發(fā)揮最佳的性能
-
可擴展性差
-
存在數(shù)據(jù)一致性與可靠性方面的問題
分離模式
針對傳統(tǒng)分布式存儲系統(tǒng)存在的問題,人們提出了將計算和存儲分離的模式,這種模式相比于傳統(tǒng)的模式在資源管理、可擴展性等方面表現(xiàn)得更好,現(xiàn)在的許多數(shù)據(jù)中心和云服務(wù)平臺都正在采用這種模式。
此外,有一種稱為RDMA(Remote Direct Memory Acces)的網(wǎng)絡(luò)技術(shù)正在應(yīng)用于分布式系統(tǒng)中,這種技術(shù)能夠允許跨過CPU直接訪問遠(yuǎn)端節(jié)點的內(nèi)存,因此具有低延遲和低CPU利用率的特點,采用這種技術(shù)能夠大大提高分布式系統(tǒng)的性能。
既然分離出了計算和存儲節(jié)點,那么就需要在其中一種節(jié)點上安裝管理程序以維護這個系統(tǒng),根據(jù)管理程序所在的節(jié)點,結(jié)合PM存儲介質(zhì)和RDMA傳輸技術(shù),提出了兩類模型:aDPM(active disaggregated PM)和pDPM(passive disaggregated PM)。其中,主動(active)和被動(passive)是指對數(shù)據(jù)的管理模式。
aDPM
aDPM的架構(gòu)如下圖所示
可以看到,在aDPM中,將管理程序安裝在存儲節(jié)點,采用這種方式可以降低延遲,但是為了維持較大的網(wǎng)絡(luò)帶寬,在存儲節(jié)點需要有較高的處理能力,由此會產(chǎn)生較大能耗。此外,如果該系統(tǒng)采用了RDMA技術(shù),那么在這種情況下,需要事先通過管理層才能到達(dá)內(nèi)存,并沒有發(fā)揮RDMA直達(dá)內(nèi)存的優(yōu)點。
pDPM
由于aDPM還存在著一些不足,于是考慮將管理程序放在計算節(jié)點,從而組成了pDPM模型。pDPM的架構(gòu)如下圖所示:
采用這種模式有效地解決了aDPM中RDMA無法發(fā)揮作用的不足,在這種模式下,只需要在存儲節(jié)點安裝支持RDMA的智能網(wǎng)卡,就能實現(xiàn)對存儲節(jié)點內(nèi)存的直接訪問。但在這種模式下,存儲節(jié)點失去了處理能力,接下來的問題就是在哪里處理與管理數(shù)據(jù)。從這點出發(fā),提出了三種模式:pDPM-Direct,pDPM-Central和Clover
pDPM-Direct
直觀的想法是在計算節(jié)點進行數(shù)據(jù)的管理,計算節(jié)點通過單向的RDMA對存儲節(jié)點進行讀寫操作,它的架構(gòu)如下所示:
以下簡要介紹這種架構(gòu)在讀寫方面的實現(xiàn):
對于一條數(shù)據(jù),它在存儲節(jié)點中的形式是一個KV條目,每個KV條目包含已提交和未提交數(shù)據(jù),同時這些數(shù)據(jù)需要有校驗碼保證可靠性。
-
當(dāng)進行讀操作時,讀取對于KV條目中的已提交數(shù)據(jù),并進行校驗,如果校驗失敗,需要重新讀取。
-
當(dāng)進行寫操作時,首先對要寫的KV條目加鎖,再先后將數(shù)據(jù)寫入未提交和已提交數(shù)據(jù)中,最后釋放鎖。
可以看到,采取這種方式存在的問題有:
-
寫操作時較慢
-
一條數(shù)據(jù)需要復(fù)制為兩份保存,會造成空間的浪費。
pDPM-Central
pDPM-Direct采用的方式相當(dāng)于將數(shù)據(jù)的處理分散到每一個計算節(jié)點上,那么相對應(yīng)的另一種思路是將數(shù)據(jù)的處理集中在一個調(diào)度器,這個調(diào)度器位于計算節(jié)點和存儲節(jié)點之間,這就是pDPM-Central采用的方法。它的架構(gòu)如下所示:
以下簡要介紹這種架構(gòu)在讀寫方面的實現(xiàn):
在調(diào)度器中的PM保存著一張映射表,每個條目保存的是一條數(shù)據(jù)所在的地址。
-
當(dāng)進行讀操作時,計算節(jié)點會向調(diào)度器發(fā)送一個RPC請求,調(diào)度器會給對應(yīng)得映射表條目加鎖,然后調(diào)度器從存儲節(jié)點讀取數(shù)據(jù)并返回給計算節(jié)點,最后釋放條目上的鎖
-
當(dāng)進行寫操作時,計算節(jié)點會向調(diào)度器發(fā)送一個RPC請求,此時調(diào)度器需要為這條數(shù)據(jù)在存儲節(jié)點中分配空間,然后調(diào)度器將數(shù)據(jù)寫入分配的空間中,最后更新內(nèi)部的映射表(需要加鎖)
可以看到,采取這種方式存在的問題有:
-
由于中間經(jīng)過調(diào)度器,讀操作的速度下降
-
調(diào)度器本身的CPU使用率非常高,需要處理計算節(jié)點的RPC請求、分配存儲節(jié)點的空間等
-
調(diào)度器成為了該系統(tǒng)的一個瓶頸
Clover
Clover采取的模式是對以上兩種方式的混合,它將數(shù)據(jù)和元數(shù)據(jù)分離,分別采用不同的形式進行管理,其中對于數(shù)據(jù)的管理(稱為數(shù)據(jù)層),采用的是pDPM-Direct中的方式,即將數(shù)據(jù)的讀寫操作分散在每個計算節(jié)點中;對于元數(shù)據(jù)的管理(稱為元數(shù)據(jù)層),采用的是pDPM-Central中的方式,即將數(shù)據(jù)空間分配和垃圾回收等操作集中在一個元數(shù)據(jù)服務(wù)器(MS)中。它的架構(gòu)如下圖所示:
數(shù)據(jù)層
對于數(shù)據(jù)層,需要完成的基本操作是數(shù)據(jù)的讀寫操作,這里采用的是一種不需要加鎖的數(shù)據(jù)結(jié)構(gòu),對于一條數(shù)據(jù)以鏈表的形式存儲,鏈表的每個結(jié)點代表的是該數(shù)據(jù)的歷史版本,不難看出,該鏈表的最后一個結(jié)點就是該數(shù)據(jù)的最新版本。同時在計算節(jié)點中保存著一個游標(biāo)(類似指針),代表的是上一次訪問該條數(shù)據(jù)時的版本(不一定是最新的)。
-
當(dāng)進行讀操作時,根據(jù)計算節(jié)點中的游標(biāo)找到該條數(shù)據(jù)對應(yīng)鏈表中的位置,從該位置開始遍歷直至找到鏈表末尾,得到該條數(shù)據(jù)的最新版本。
-
當(dāng)進行寫操作時,需要在存儲節(jié)點對應(yīng)數(shù)據(jù)條目中添加一個新的結(jié)點,如果該鏈表只有一個結(jié)點,說明是新創(chuàng)建的數(shù)據(jù),只需要在計算節(jié)點中添加新的指向該結(jié)點的游標(biāo);如果鏈表有多個結(jié)點,說明是對數(shù)據(jù)的更新,將代表上一版本的結(jié)點指向新創(chuàng)建的結(jié)點,最后更新執(zhí)行寫操作的計算節(jié)點中的游標(biāo)。
可以看到,在讀操作中當(dāng)遇到鏈表很長而游標(biāo)指向的歷史版本過早時,存在遍歷時間過長的情況。因此可以采取一種優(yōu)化措施,在存儲節(jié)點內(nèi)部保存一類稱為捷徑(shortcut)的指針,它們會指向?qū)?yīng)數(shù)據(jù)條目中盡量新的版本結(jié)點。在實際應(yīng)用時,會并行采取遍歷鏈表和使用捷徑指針的方式,直到其中一種方式獲得最新的數(shù)據(jù)。
數(shù)據(jù)層的組織形式如下圖所示:
元數(shù)據(jù)層
對于元數(shù)據(jù)層,它只與計算節(jié)點進行通信,進行空間管理、垃圾回收、負(fù)載均衡等操作。
對于空間分配的操作,在MS中將空閑空間打包為一個塊(chunk),每個塊的大小和數(shù)據(jù)緩沖區(qū)的大小一致,不同的塊會有不同的大小,這些塊會組成一個空閑隊列。當(dāng)計算節(jié)點需要進行寫操作時,會在后臺向MS請求分配一個對應(yīng)的塊,MS會在空閑隊列中將這個塊發(fā)送給計算節(jié)點。
對于垃圾回收操作,在寫完成之后,計算節(jié)點可能需要淘汰一些歷史版本結(jié)點,因此后臺會給MS發(fā)送回收請求,收到回收請求的MS會將原來分配出去的塊重新放回空閑隊列中。
以上操作的組織形式如下圖所示:
對于數(shù)據(jù)可靠性與負(fù)載均衡,一個數(shù)據(jù)條目的歷史版本的副本可能存在于不同的存儲節(jié)點上,一個版本結(jié)點可以指向多個下一版本結(jié)點,盡管它們存在不同的存儲節(jié)點。大致思路如下圖所示:
文章來源:http://www.zghlxwxcb.cn/news/detail-727613.html
小結(jié)
在以上三種pDPM模型中,Clover嘗試結(jié)合另外兩種模型的優(yōu)點,經(jīng)過實驗證明Clover的確具有讀寫延遲低、能耗低、成本低等優(yōu)點,但也存在大量寫沖突情況下性能變差的問題??傊?,在設(shè)計分布式存儲系統(tǒng)時可以考慮采用pDPM中的Clover模型。文章來源地址http://www.zghlxwxcb.cn/news/detail-727613.html
到了這里,關(guān)于論文閱讀筆記(Clover: 計算與存儲被動分離的分布式鍵值存儲系統(tǒng))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!