基于RDMA和NVM的大数据系统一致性协议研究
基于RDMA和NVM的大數(shù)據(jù)系統(tǒng)一致性協(xié)議研究
吳昊1,2, 陳康1,2, 武永衛(wèi)1,2, 鄭緯民1,2
1 清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系,北京 100084
2 北京信息科學(xué)與技術(shù)國家研究中心,北京 100084
摘要:分布式的存儲(chǔ)系統(tǒng)以及計(jì)算系統(tǒng)是構(gòu)造大數(shù)據(jù)處理系統(tǒng)的基礎(chǔ)。系統(tǒng)的高可用性是任何一個(gè)分布式系統(tǒng)的基石,高可用技術(shù)一般依賴于一致性協(xié)議。討論了經(jīng)典的非拜占庭的分布式一致性協(xié)議以及新技術(shù)發(fā)展下的RDMA通信協(xié)議與NVM存儲(chǔ)介質(zhì),通過RDMA和NVM的結(jié)合獲得了更高性能的高可用系統(tǒng)。改進(jìn)了一致性協(xié)議,使其能夠更好地利用RDMA與NVM的特性。實(shí)現(xiàn)的系統(tǒng)在保證系統(tǒng)數(shù)據(jù)一致和可用的同時(shí),有效地提高了協(xié)議實(shí)現(xiàn)的性能。實(shí)驗(yàn)表明,相比于現(xiàn)有的系統(tǒng),實(shí)現(xiàn)的系統(tǒng)能夠得到40%的性能提高。關(guān)鍵詞:大數(shù)據(jù) ; 分布式系統(tǒng) ; 一致性協(xié)議 ; 遠(yuǎn)程內(nèi)存直接訪問 ; 非易失存儲(chǔ)器
論文引用格式:
吳昊, 陳康, 武永衛(wèi), 鄭緯民. 基于RDMA和NVM的大數(shù)據(jù)系統(tǒng)一致性協(xié)議研究. 大數(shù)據(jù)[J], 2019, 5(4):89-99
WU H, CHEN K, WU Y W, ZHENG W M.Research on the consensus of big data systems based on RDMA and NVM. Big Data Research[J], 2019, 5(4):89-99
1 引言
隨著分布式系統(tǒng)規(guī)模的增大,服務(wù)器宕機(jī)和網(wǎng)絡(luò)服務(wù)中斷等各種故障使得分布式系統(tǒng)中斷服務(wù)的可能性越來越高。為了解決單點(diǎn)故障問題,維護(hù)系統(tǒng)的高可用性,分布式系統(tǒng)在實(shí)際應(yīng)用中一般采用多副本的備份技術(shù)。這種方法不僅可以保證系統(tǒng)的高可靠性,還可以對請求進(jìn)行相應(yīng)的負(fù)載均衡,以提高服務(wù)的并發(fā)數(shù)量和擴(kuò)展性。但是,這種多副本技術(shù)同樣會(huì)帶來系統(tǒng)一致性、可用性的問題。設(shè)計(jì)者通常使用分布式一致性協(xié)議來保證多副本系統(tǒng)中多臺(tái)機(jī)器上數(shù)據(jù)的強(qiáng)一致性。另外,隨著遠(yuǎn)程內(nèi)存直接訪問(remote direct memory access,RDMA)等新型網(wǎng)絡(luò)技術(shù)和非易失存儲(chǔ)器(non-volatile memory,NVM)等新型存儲(chǔ)介質(zhì)的生產(chǎn)和普及,所有的系統(tǒng)服務(wù)在網(wǎng)絡(luò)通信和存儲(chǔ)過程中的性能都會(huì)得到巨大的提高,這為提高一致性系統(tǒng)的性能提供了機(jī)會(huì)。目前的一致性協(xié)議在新的網(wǎng)絡(luò)技術(shù)和存儲(chǔ)介質(zhì)中的實(shí)現(xiàn)都不能完全地利用RDMA和NVM的特性。本文將展開這方面的研究,結(jié)合RDMA和NVM的特性,設(shè)計(jì)更加高效的分布式一致性協(xié)議。
2 概述
2.1 一致性協(xié)議概述
一致性問題是指集群節(jié)點(diǎn)在網(wǎng)絡(luò)狀態(tài)和服務(wù)器節(jié)點(diǎn)的運(yùn)行狀態(tài)都不可以控制的情況下,仍然能夠?qū)φ麄€(gè)集群的某一問題或者集群的狀態(tài)達(dá)成一致的共識(shí)。一般來說,如果分布式系統(tǒng)中有2f+1個(gè)副本服務(wù)器在工作,一致性協(xié)議一般可以容忍f個(gè)副本服務(wù)器出現(xiàn)故障,即只要系統(tǒng)中存在f+1個(gè)副本服務(wù)器正常工作,那么分布式系統(tǒng)就可以正常地對外提供服務(wù)。圖1展示了分布式一致性協(xié)議的簡要發(fā)展過程和工業(yè)應(yīng)用。其中,兩階段提交協(xié)議 通過投票階段和正式提交階段的兩輪消息交互,使得某項(xiàng)決定達(dá)成一致。而三階段提交協(xié)議是兩階段提交協(xié)議的阻塞問題的優(yōu)化方案。Quorum 算法通過限定參與讀寫操作的副本的最小數(shù)目,實(shí)現(xiàn)讀寫操作的互斥,從而支持多副本的并發(fā)更新。在Lamport提出了Paxo s算法后,很多類Paxos算法陸續(xù)出現(xiàn),以適應(yīng)不同的應(yīng)用環(huán)境。如Multi-P axos就是通過選舉出一個(gè)領(lǐng)導(dǎo)者,減少了Paxos協(xié)議的第一輪通信,避免了多個(gè)節(jié)點(diǎn)同時(shí)提交指令時(shí)的沖突問題。ZAB(ZooKeeper atomic broadca st)協(xié)議是Multi-Paxos的變種,是一種能夠支持崩潰恢復(fù)的原子廣播算法。Raft算法是研究者為了降低Paxos算法的復(fù)雜性而設(shè)計(jì)的一個(gè)管理日志的一致性協(xié)議。還有一些弱領(lǐng)導(dǎo)者協(xié)議(如Fas t Paxos、Generaliz ed Paxos、FGGC、EPaxos)也有不同方面的優(yōu)化,但是協(xié)議相對復(fù)雜,實(shí)際應(yīng)用很少。圖1???分布式一致性協(xié)議的簡要發(fā)展過程與工業(yè)應(yīng)用2.2 RDMA概述
RDMA網(wǎng)絡(luò)技術(shù)是一種新型網(wǎng)絡(luò)技術(shù),它可以繞過遠(yuǎn)端CPU直接讀取遠(yuǎn)端內(nèi)存,同時(shí)還具有高吞吐量和低時(shí)延的特性,這些特性使其可以有效地降低集群中網(wǎng)絡(luò)通信的開銷。目前,RDMA 網(wǎng)絡(luò)在數(shù)據(jù)中心已經(jīng)被逐漸普及。
RDMA的通信模式分為可靠連接(reliable connection,RC)、不可靠連接(unreliable connection,UC)和不可靠的數(shù)據(jù)報(bào)(unreliable datagram,UD)3種模式。RDMA支持的通信原語分別是RDMA Write、RDMA Read、Send、Receive以及原子操作(Atomic)。其中,Read和Write是單邊的操作。單邊的讀寫操作可以繞過遠(yuǎn)端的CPU。Send和Receive是雙邊的操作,雙邊的操作要求通信雙方的CPU必須同時(shí)參與才能完成通信。原子操作包括Fetch and Add和Compare and Swap等。不同的連接模式支持不同的RDMA原語操作,因此本文采用RC模式以及單邊的讀寫操作。
2.3 NVM概述
NVM是新型存儲(chǔ)設(shè)備,它能夠在設(shè)備斷電之后仍然保存其中存儲(chǔ)的數(shù)據(jù)。新型非易失性存儲(chǔ)器(如PC M)具有可字節(jié)尋址、低時(shí)延、高密度等特點(diǎn),其能耗比磁盤低90%以上,同時(shí)讀寫的時(shí)延也和DRAM相近。但是與DRAM不同的是,NVM的讀寫速度不對稱,其讀數(shù)據(jù)的速度快于寫數(shù)據(jù)的速度。而且類似于固態(tài)硬盤(solid state drive, SSD),其擦寫次數(shù)存在上限,因此其壽命有限,也需要考慮磨損均衡的問題。
表2比較了不同類型的存儲(chǔ)介質(zhì)在能耗、讀寫時(shí)延以及最大擦寫次數(shù)等方面的性能。從表2可以明顯看出各種不同存儲(chǔ)介質(zhì)的區(qū)別。NVM在很多方面和系統(tǒng)內(nèi)存使用的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dynamic random access memory,DRAM)相似,尤其是其讀寫速度快、容量大、可字節(jié)尋址的特性,使其有望代替主存。NVM還具有DRAM不具有的非易失性的特點(diǎn),這使其可以應(yīng)用到一致性系統(tǒng)中,作為日志存儲(chǔ)的存儲(chǔ)器,提高一致性系統(tǒng)的性能。3 基于RDMA和NVM的一致性協(xié)議
3.1 RDMA、NVM與一致性協(xié)議的結(jié)合
在傳統(tǒng)的一致性協(xié)議中,協(xié)議除了要處理指令的共識(shí)問題,還要保證指令的持久化。考慮到集群可能出現(xiàn)全部宕機(jī)的問題,因此要保證指令在系統(tǒng)重啟時(shí)可以從持久化的存儲(chǔ)中恢復(fù)出來。傳統(tǒng)的一致性協(xié)議使用磁盤或SSD作為持久化指令的存儲(chǔ)介質(zhì)。隨之而來的問題是協(xié)議中的領(lǐng)導(dǎo)者在復(fù)制日志的時(shí)候,不知道日志是否已經(jīng)被持久化。領(lǐng)導(dǎo)者必須等待其他副本進(jìn)程回復(fù)日志已經(jīng)被持久化的消息后,協(xié)議算法才能繼續(xù)。由于存儲(chǔ)介質(zhì)的問題,即使在RDMA通信環(huán)境下,這個(gè)問題也同樣存在。如APUS 也只是在系統(tǒng)的網(wǎng)絡(luò)層設(shè)計(jì)中用RDMA網(wǎng)絡(luò)替換了傳統(tǒng)的以太網(wǎng),副本進(jìn)程通過RDMA網(wǎng)絡(luò)接收復(fù)制的指令消息,將其存入SSD后回復(fù)領(lǐng)導(dǎo)者。這種方式并沒有完全利用RDMA的特性,尤其是RDMA繞過遠(yuǎn)端CPU的特性。
將NVM作為一致性系統(tǒng)中的存儲(chǔ)介質(zhì),可為解決上述問題提供幫助。首先, NVM可以替代內(nèi)存與RDMA直接進(jìn)行通信,即服務(wù)器可以使用RDMA對遠(yuǎn)端的NVM直接進(jìn)行讀寫;其次,NVM還具有持久性,使得使用RDMA通信后的消息同時(shí)也被持久化。這樣就使得通信和持久化兩個(gè)問題都通過RDMA的Write操作解決了。使用NVM后,領(lǐng)導(dǎo)者通過RDMA復(fù)制日志時(shí),就不需要等待副本進(jìn)程的回復(fù),通過檢查自身的狀態(tài)就可以判斷日志是否被持久化到副本進(jìn)程中,進(jìn)而繼續(xù)判斷日志的共識(shí)過程是否成功。當(dāng)領(lǐng)導(dǎo)者使用RDMA的Write操作成功之后,遠(yuǎn)端的RDMA網(wǎng)卡會(huì)發(fā)送一個(gè)ACK到本地的網(wǎng)卡中,在本地網(wǎng)卡的完成隊(duì)列(completion queue,CQ)中生成一個(gè)發(fā)送消息完成的狀態(tài)。在RDMA的設(shè)計(jì)中,本地服務(wù)器首先調(diào)用RDMA Write操作向遠(yuǎn)端服務(wù)器發(fā)送消息,遠(yuǎn)端的服務(wù)器網(wǎng)卡收到該消息后會(huì)立即返回給本地服務(wù)器網(wǎng)卡一個(gè)ACK消息。因此Write操作的ACK消息不能確保數(shù)據(jù)被寫入NVM中,即數(shù)據(jù)不能確保是否被持久化。為了解決這個(gè)問題,筆者設(shè)計(jì)在每個(gè)Write操作之后,立刻發(fā)送一個(gè)RDMA中的Read操作。該Read操作讀取大小為0 byte的數(shù)據(jù),讀取的遠(yuǎn)端內(nèi)存地址即Write操作中寫入遠(yuǎn)端內(nèi)存的地址,如Hyper Loo p中的設(shè)計(jì)。這個(gè)Read操作會(huì)保證對應(yīng)位置的數(shù)據(jù)已經(jīng)被成功寫入NVM中。本地程序只需要檢測本地網(wǎng)卡的CQ中對應(yīng)Read操作的狀態(tài),就可以判斷對應(yīng)的數(shù)據(jù)是否被成功寫入NVM。
使用RDMA網(wǎng)絡(luò)和NVM存儲(chǔ)為網(wǎng)絡(luò)中斷后的領(lǐng)導(dǎo)者選舉引入了新的問題。傳統(tǒng)協(xié)議的解決方法是每次發(fā)送指令時(shí),指令都會(huì)附帶一個(gè)系統(tǒng)版本信息。這是一個(gè)整型數(shù)值,用來存儲(chǔ)系統(tǒng)版本。每次系統(tǒng)重新選舉領(lǐng)導(dǎo)者的時(shí)候,這個(gè)版本號(hào)就會(huì)增加1。當(dāng)副本進(jìn)程收到指令的時(shí)候,副本進(jìn)程判斷指令附帶的版本信息,如果是舊的版本就忽略掉,從而避免舊的領(lǐng)導(dǎo)者對整個(gè)日志的破壞。但是由于筆者提出的方案繞過了副本機(jī)器的CPU,副本進(jìn)程無法對消息進(jìn)行判斷,因此還需要對選舉的流程進(jìn)行修改,以保證協(xié)議的正確性。
本文針對RDMA網(wǎng)絡(luò)和NVM存儲(chǔ)介質(zhì)的特性對Multi-Paxos協(xié)議進(jìn)行了修改,并對修改后的協(xié)議進(jìn)行了實(shí)現(xiàn)。本文修改了協(xié)議流程中對一致性成功的判定方式以及領(lǐng)導(dǎo)者選舉和日志恢復(fù)中的部分流程,利用RDMA Write操作的繞過目標(biāo)服務(wù)器CPU的特性、NVM的持久性和可字節(jié)尋址的特性,使得修改后的協(xié)議具有低時(shí)延、高吞吐量和低CPU消耗等特點(diǎn)。下面將介紹修改后的具體流程。
3.2 日志復(fù)制
圖2為日志復(fù)制流程。在協(xié)議正常運(yùn)行的情況下,日志的編號(hào)和復(fù)制都由領(lǐng)導(dǎo)者負(fù)責(zé)。客戶端通過RDMA的Write操作將指令發(fā)送給領(lǐng)導(dǎo)者服務(wù)器。領(lǐng)導(dǎo)者服務(wù)器會(huì)不斷輪詢每一個(gè)客戶端對應(yīng)的在本地注冊的內(nèi)存,檢測是否有客戶端發(fā)送指令過來。當(dāng)領(lǐng)導(dǎo)者服務(wù)器接收到從客戶端發(fā)送過來的指令后,領(lǐng)導(dǎo)者為該條指令分配一個(gè)序列號(hào)和這個(gè)指令在整個(gè)系統(tǒng)日志里的地址。然后,領(lǐng)導(dǎo)者服務(wù)器將該指令復(fù)制到其他的服務(wù)器上,領(lǐng)導(dǎo)者通過RDMA的Write操作直接將這條指令寫入對應(yīng)副本機(jī)器中的NVM中,指令的地址即剛才分配的地址。當(dāng)領(lǐng)導(dǎo)者將指令發(fā)送到副本機(jī)器后,領(lǐng)導(dǎo)者會(huì)繼續(xù)發(fā)送對應(yīng)位置的一個(gè)Read操作,這個(gè)Read操作讀取的字節(jié)為0,用于保證數(shù)據(jù)被持久化到NVM中。同時(shí)這個(gè)Read操作可以在Write操作后直接使用,不需要等待Write操作的返回。領(lǐng)導(dǎo)者可以通過從RDMA的完成隊(duì)列中獲取相應(yīng)Read操作對應(yīng)的消息,判斷指令是否被成功寫入。領(lǐng)導(dǎo)者通過計(jì)算單個(gè)指令發(fā)送成功的次數(shù)判斷指令是否可以提交,當(dāng)單個(gè)指令發(fā)送成功的次數(shù)為f+1次,即領(lǐng)導(dǎo)者已經(jīng)成功地將該指令發(fā)送到f+1個(gè)副本機(jī)器中時(shí),即可認(rèn)為該指令已經(jīng)完成了共識(shí)過程。領(lǐng)導(dǎo)者提交該指令,發(fā)送commit消息給所有的副本服務(wù)器,同時(shí)執(zhí)行該指令,并將執(zhí)行的結(jié)果返回給相應(yīng)客戶端。如果指令的發(fā)送次數(shù)沒有超過f+1次,領(lǐng)導(dǎo)者將不斷發(fā)送該指令給未接收到的副本服務(wù)器,直到其接收到該指令為止。
圖2???日志復(fù)制流程3.3 領(lǐng)導(dǎo)者選舉與日志恢復(fù)
由于協(xié)議是強(qiáng)領(lǐng)導(dǎo)者協(xié)議,因此當(dāng)領(lǐng)導(dǎo)者出現(xiàn)故障時(shí),整個(gè)系統(tǒng)就要重新選舉出一個(gè)新的領(lǐng)導(dǎo)者,才能繼續(xù)對外提供服務(wù)。每個(gè)領(lǐng)導(dǎo)者都對應(yīng)著一個(gè)任期編號(hào)(term)。當(dāng)副本進(jìn)程檢測到與領(lǐng)導(dǎo)者的連接中斷時(shí),該副本進(jìn)程會(huì)進(jìn)入選舉領(lǐng)導(dǎo)者的狀態(tài)。它會(huì)將term值增加1,并向其他的副本服務(wù)器發(fā)送選舉其為領(lǐng)導(dǎo)者的消息,在該消息中附帶自己的term值。然后等待其他副本進(jìn)程為其投票。其他副本進(jìn)程收到該消息后,根據(jù)自身情況回復(fù)相應(yīng)消息:如果副本進(jìn)程檢測到與領(lǐng)導(dǎo)者的連接暢通,那么回復(fù)不投票給發(fā)送該指令的副本進(jìn)程,并將領(lǐng)導(dǎo)者的編號(hào)信息發(fā)送給該副本進(jìn)程;如果其檢測到與領(lǐng)導(dǎo)者也斷開了連接,但是已經(jīng)投票給了其他term值更高的副本進(jìn)程,那么將回復(fù)不投票給發(fā)送該指令的副本進(jìn)程;如果其檢測到與領(lǐng)導(dǎo)著也斷開了連接,并且沒有投票給任何其他的副本進(jìn)程,那么回復(fù)投票給發(fā)送該指令的副本進(jìn)程。當(dāng)某一個(gè)副本進(jìn)程收到大于f+1個(gè)為其投票的信息后,該副本進(jìn)程的角色變?yōu)轭I(lǐng)導(dǎo)者,并進(jìn)行日志恢復(fù)的過程,同時(shí)阻止其他副本進(jìn)程進(jìn)行新一輪的選舉。
系統(tǒng)在復(fù)制指令的時(shí)候使用了RDMA的Write操作將指令寫入副本進(jìn)程的NVM中,領(lǐng)導(dǎo)者直接繞過了副本進(jìn)程的CPU和操作系統(tǒng)。這樣的好處是減少了副本進(jìn)程的CPU消耗,同時(shí)降低了時(shí)延;壞處是副本進(jìn)程不會(huì)判斷寫入的指令是否是由新的領(lǐng)導(dǎo)者寫入的。為了解決這個(gè)問題,系統(tǒng)在選舉領(lǐng)導(dǎo)者的時(shí)候,當(dāng)副本進(jìn)程收到某個(gè)副本進(jìn)程選舉領(lǐng)導(dǎo)者成功消息的時(shí)候,該副本進(jìn)程就會(huì)斷開與舊的領(lǐng)導(dǎo)者的RDMA連接。這樣使得舊的領(lǐng)導(dǎo)者無法寫入任何新系統(tǒng)中存活的副本進(jìn)程的NVM中,就不會(huì)破壞整個(gè)日志。圖3為領(lǐng)導(dǎo)者選舉流程。
圖3???領(lǐng)導(dǎo)者選舉流程
進(jìn)入選舉過程后,收到選舉消息的副本機(jī)器會(huì)把與之前的領(lǐng)導(dǎo)者之間的連接切斷,銷毀相應(yīng)的資源。斷開連接的副本服務(wù)器若想重新加入系統(tǒng)集群中,要向領(lǐng)導(dǎo)者發(fā)送join指令,該指令表明有新的副本服務(wù)器要加入系統(tǒng)。領(lǐng)導(dǎo)者收到該指令后,同樣為該指令分配其在日志中的位置,并將其復(fù)制到其他副本服務(wù)器中。當(dāng)領(lǐng)導(dǎo)者成功將其發(fā)送到了f+1個(gè)副本服務(wù)器上時(shí),表明該指令已經(jīng)成功提交到日志中,該副本服務(wù)器可以加入系統(tǒng)中。同時(shí),系統(tǒng)中副本機(jī)器的多數(shù)派的數(shù)量也要發(fā)生相應(yīng)的改變,領(lǐng)導(dǎo)者在復(fù)制日志的時(shí)候也要將日志復(fù)制到該副本機(jī)器中。
4 相關(guān)工作
近年來,使用硬件和一致性協(xié)議結(jié)合的方法對一致性協(xié)議進(jìn)行優(yōu)化的工作也有很多。NetPa xos利用網(wǎng)絡(luò)交換機(jī)中消息的順序?qū)崿F(xiàn)Paxos算法,同時(shí)該工作還能夠兼容Open Flow的應(yīng)用程序編程接口(application programming interface, API),具有很高的應(yīng)用價(jià)值。NO Paxos則首先設(shè)計(jì)了一個(gè)特殊的網(wǎng)絡(luò),以支持有序不可靠廣播(ordered unreliable multicast, OUM),并在該網(wǎng)絡(luò)下實(shí)現(xiàn)一致性協(xié)議。由于該網(wǎng)絡(luò)是有序的網(wǎng)絡(luò),因此要比Paxos等簡單很多。同樣還有將Paxos協(xié)議實(shí)現(xiàn)在可編程路由器中,如使用P4語言實(shí)現(xiàn)Paxos協(xié)議的Switchc y-Paxos。也有學(xué)者使用現(xiàn)場可編程門陣列(field programmable gate arr ay,FPGA)在網(wǎng)絡(luò)層實(shí)現(xiàn)ZAB協(xié)議,性能也非常優(yōu)秀。
目前使用RDMA網(wǎng)絡(luò)實(shí)現(xiàn)一致性 協(xié)議的工作有DARE系統(tǒng)和APUS。其中, DARE可以看作將Raft協(xié)議在RDMA環(huán)境下的實(shí)現(xiàn),其利用RDMA的原語對Raft進(jìn)行了修改。APUS則是Multi-Paxos算法在RDMA中的實(shí)現(xiàn),同時(shí)使用SSD存儲(chǔ)日志。與本文的實(shí)現(xiàn)比較,二者各有不同的缺陷。DARE由于協(xié)議的設(shè)計(jì),需要兩輪通信才可以提交指令,時(shí)延比本文的工作要高很多,同時(shí)DARE只能運(yùn)行在內(nèi)存中,并沒有做日志的持久化工作。APUS則存在之前提到的問題,雖然它是一輪通信的協(xié)議,但是其領(lǐng)導(dǎo)者必須等待副本的回復(fù)才可以判斷日志是否可以提交,時(shí)延也比本文的工作高。在吞吐量方面,三者相差不大。由于APUS沒有提供直接測試的客戶端程序,因此第5節(jié)中將本文工作和DARE進(jìn)行了對比。
除了一致性協(xié)議的工作,使用RDMA進(jìn)行數(shù)據(jù)復(fù)制的 工作還有Tailwind。Tailwind的復(fù)制過程中使用RDMA的Write操作進(jìn)行數(shù)據(jù)復(fù)制,與本文的工作有一定程度的重疊。不過Tailwind和本文的工作也有3點(diǎn)區(qū)別。一是Tailwind使用的是Primary-Backup的模式,使用f+1個(gè)副本容忍f個(gè)副本發(fā)生錯(cuò)誤,而本文使用的是傳統(tǒng)的一致性協(xié)議設(shè)計(jì),使用2f+1個(gè)副本容忍f個(gè)副本發(fā)生錯(cuò)誤,提供了更高的可用性。在f個(gè)副本發(fā)生錯(cuò)誤后,仍然能夠繼續(xù)對外提供服務(wù)。二是Tailwind的工作中提供了關(guān)于數(shù)據(jù)恢復(fù)的方法,但是沒有關(guān)于選舉領(lǐng)導(dǎo)者的工作。三是在數(shù)據(jù)持久化的工作中,本文使用NVM硬件和RDMA中的Read操作確保數(shù)據(jù)的持久性。但是Tailwind在保證數(shù)據(jù)持久性方面沒有任何的工作,只是假設(shè)服務(wù)器存在備用的電源設(shè)備,并且服務(wù)器能夠在斷電后利用備用的電源設(shè)備將PCIe控制器和RDMA網(wǎng)卡緩存中的數(shù)據(jù)寫入SSD中。因此Tailwind并不具有任何應(yīng)用價(jià)值。同時(shí)Tailwind沒有提供其實(shí)現(xiàn)的代碼,因此本文工作也無法和其進(jìn)行測試對比。
5 系統(tǒng)性能測試
5.1 測試環(huán)境
本文使用C++語言對修改后的MultiPaxos協(xié)議進(jìn)行了實(shí)現(xiàn),同時(shí)使用 基于InfiniBand網(wǎng)絡(luò)設(shè)施的服務(wù)器集群對實(shí)現(xiàn)的一致性系統(tǒng)進(jìn)行測試。集群由10臺(tái)服務(wù)器構(gòu)成,每臺(tái)服務(wù)器的配置見表3。其中,筆者使用5臺(tái)服務(wù)器作為一致性系統(tǒng)的服務(wù)端,另外5臺(tái)服務(wù)器作為客戶端,負(fù)責(zé)和服務(wù)端進(jìn)行通信并發(fā)送請求。由于目前市面上沒有可用的NVM硬件,因此使用內(nèi)存模擬測試,同時(shí)由于NVM的寫時(shí)延比內(nèi)存高,因此在測試時(shí),筆者修改了CentOS內(nèi)核,使得系統(tǒng)內(nèi)存的寫時(shí)延增加150 ns,從而匹配NVM性能。
?
5.2 性能測試
在性能測試中,本文主要從時(shí)延和吞吐量兩個(gè)方面對一致性系統(tǒng)進(jìn)行測試。在測試系統(tǒng)時(shí)延的過程中,筆者分別對數(shù)據(jù)大小為8 byte、32 byte、128 byte、512 byte和2 048 byte的指令提交時(shí)延進(jìn)行了測試。每次測試都將指令分別提交,即當(dāng)客戶端收到一個(gè)指令提交成功的回復(fù)后,再提交下一個(gè)指令。每次測試提交10 000條指令,然后對所得的結(jié)果取平均值。在測試吞吐量時(shí),筆者隨機(jī)生成測試數(shù)據(jù),數(shù)據(jù)量大小為32 byte,通過不同數(shù)量的客戶端同時(shí)進(jìn)行提交,并測試性能。
測試結(jié)果如圖4所示。由于本文工作是單輪通信協(xié)議,而DARE是兩輪通信協(xié)議,因此本文工作的時(shí)延比DARE低。在時(shí)延測試中,當(dāng)數(shù)據(jù)大小為8 byte時(shí),單次提交指令的時(shí)延最低可達(dá)到6 μs,相比DARE的9 μs時(shí)延來說約減少了33%。由于RDMA操作的時(shí)延隨著數(shù)據(jù)大小的增加而增加,因此二者的時(shí)延也隨著數(shù)據(jù)大小的增加而增加。
圖4???時(shí)延和吞吐量測試結(jié)果在吞吐量測試中,二者的吞吐量都隨著客戶端連接數(shù)量的增加而增大。DARE協(xié)議在第二輪通信中要比本文工作多發(fā)送一輪日志的尾指針,發(fā)送數(shù)據(jù)量比本文多一些,因此本文工作的吞吐量要大一些。本文的協(xié)議中請求可以并行處理,而DARE只可以等待前面的請求處理結(jié)束后才開始處理之后的請求。為了提高性能,DARE在設(shè)計(jì)中使用了批量處理操作,將相同操作類型的請求打包到一起。隨著連接的客戶端數(shù)量增加,領(lǐng)導(dǎo)者服務(wù)器接收到的請求也隨之增多,DARE每一次批量處理后的數(shù)據(jù)大小也隨著增大。RDMA的帶寬利用率是隨著傳輸數(shù)據(jù)大小增加而增加的,因此本文工作和DARE的吞吐量差距也隨著客戶端連接數(shù)的增加而減小。
6 結(jié)束語
本文調(diào)研了分布式一致性協(xié)議的研究現(xiàn)狀以及新的網(wǎng)絡(luò)技術(shù)RDMA和新的存儲(chǔ)介質(zhì)NVM的特性。針對RDMA和NVM的特性,設(shè)計(jì)了適應(yīng)RDMA和NVM的新協(xié)議。該協(xié)議能夠充分地利用新技術(shù)以及新硬件的特性,使得分布式一致性系統(tǒng)的性能得到了巨大的提升。
作者簡介
吳昊(1992- ),男,清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系碩士生,主要研究方向?yàn)榉植际较到y(tǒng)。
陳康(1976- ),男,清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系副教授,中國計(jì)算機(jī)學(xué)會(huì)(CCF)會(huì)員,主要研究方向?yàn)榉植际较到y(tǒng)、存儲(chǔ)系統(tǒng)等。
武永衛(wèi)(1974- ),男,清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系教授,CCF高級(jí)會(huì)員,主要研究方向?yàn)椴⑿泻头植?式處理、云計(jì)算和存儲(chǔ)等。
鄭緯民(1946- ),男,清華大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)系教授、博士生導(dǎo)師,CCF會(huì)士,主要研究方向?yàn)橛?jì) 算機(jī)架構(gòu)、操作系統(tǒng)、存儲(chǔ)和分布式計(jì)算等。
《大數(shù)據(jù)》期刊
《大數(shù)據(jù)(Big Data Research,BDR)》雙月刊是由中華人民共和國工業(yè)和信息化部主管,人民郵電出版社主辦,中國計(jì)算機(jī)學(xué)會(huì)大數(shù)據(jù)專家委員會(huì)學(xué)術(shù)指導(dǎo),北京信通傳媒有限責(zé)任公司出版的中文科技核心期刊。
關(guān)注《大數(shù)據(jù)》期刊微信公眾號(hào),獲取更多內(nèi)容
往期文章回顧
基于圖查詢系統(tǒng)的圖計(jì)算引擎
大數(shù)據(jù)環(huán)境下的存儲(chǔ)系統(tǒng)構(gòu)建:挑戰(zhàn)、方法和趨勢
一種軟硬件結(jié)合的大數(shù)據(jù)訪存蹤跡收集分析工具集
開源芯片、RISC-V與敏捷開發(fā)
基因大數(shù)據(jù)的集成分析
總結(jié)
以上是生活随笔為你收集整理的基于RDMA和NVM的大数据系统一致性协议研究的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统程序设计
- 下一篇: 作者:冯景华(1984-),男,国家超