999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

分布式存儲系統讀寫一致性算法性能優化研究綜述*

2022-04-21 04:43:12沈佳杰盧修文趙澤宇
計算機工程與科學 2022年4期
關鍵詞:一致性

沈佳杰,盧修文,2,3,向 望,趙澤宇,王 新,2,3

(1.復旦大學校園信息化辦公室,上海 200433;2.復旦大學計算機科學技術學院,上海 200433;3.復旦大學上海市智能信息處理重點實驗室,上海 200433)

1 引言

分布式存儲系統[1]廣泛使用讀寫一致性算法來保證數據可用性。通過使用特定的協議,分布式存儲系統保證了用戶讀寫數據的一致性。經典拜占庭問題[2]存在數據篡改[3]的情況,而讀寫一致性問題假定所有節點都會遵守通信協議傳輸用戶數據[4]。與此同時,通過部署讀寫一致性算法,分布式存儲系統能避免在部分節點失效情況下出現服務中斷的問題,從而有效提升存儲數據的可用性[5]。

然而,讀寫一致性算法通常會帶來較大的網絡通信和存儲開銷[4],并降低分布式存儲系統中用戶數據訪問的能力。開發人員研發分布式存儲系統的過程中需部署滿足存儲應用場景需求的讀寫一致性算法,并調整該算法執行機制。但是,根據應用場景選擇適用的讀寫一致性算法依然具有很大的挑戰性。

首先,各種讀寫一致性算法通常采用不同實現機制,需要綜合分析在目標應用場景中部署特定算法的合理性。其次,由于讀寫一致性算法的數據寫入操作性能受到數據量和網絡狀態等多種因素的影響,需適應目標應用場景的讀寫請求特性和網絡條件。最后,部署讀寫一致性算法的過程中需要充分了解不同應用場景的特點,并相應地調整算法的執行機制。

為了幫助開發人員選擇適合特定應用場景的讀寫一致性算法,本文總結了主流讀寫一致性算法實現方案,綜述了分布式存儲系統中讀寫一致性算法的實現機制,分析了這些實現機制對數據讀寫操作性能的影響,總結了在各種存儲應用場景中部署讀寫一致性算法需注意的要點,主要包括以下內容:

(1)介紹了讀寫一致性算法常見的實現機制。本文總結了讀寫一致性算法主要的實現方案,并歸納了這些實現方案的優缺點,總結了這些算法適用的應用場景。在此基礎上,本文分析了分布式存儲系統中部署讀寫一致性算法的關鍵問題,總結了分布式存儲系統中讀寫一致性算法對這些問題的解決方法。

(2)綜述了讀寫一致性算法性能優化工作。由于副本和糾刪碼作為主要的數據可靠性保障機制被廣泛部署到分布式存儲系統,本文綜述了針對這2種存儲機制構建的讀寫一致性算法,比較了這些算法的存儲開銷、容錯性能和存儲機制等特性。

(3)總結了在不同數據存儲應用場景中部署讀寫一致性算法需注意的要點。在綜述算法實現方案的基礎上,本文分析了單數據中心分布式存儲系統和跨數據中心云際存儲系統2種經典應用場景中制約執行效率的因素,展望了未來分布式存儲系統中讀寫一致性算法性能優化工作的研究方向,給出了可能的解決方案。

2 讀寫一致性問題及挑戰

本節將介紹讀寫一致性問題、部署讀寫一致性算法的目標和面臨的挑戰。

2.1 讀寫一致性問題

分布式存儲系統廣泛存在節點失效和網絡故障,讀寫一致性算法需要保證在部分節點和網絡功能失效的情況下數據的可用性。不同于拜占庭問題[2]存在數據篡改[3]的情況,讀寫一致性問題假設分布式存儲系統滿足以下條件:

(1)所有的存儲節點都有可能出現節點失效和通信故障,無法保證及時回復通信消息。

(2)所有在線存儲節點的通信信息都遵守讀寫一致性協議的規定。

圖1展示了一個包含4個存儲節點和3個用戶的讀寫一致性問題示例[4]。

Figure 1 Consensus problem between multiple storage nodes

由于網絡可能無法保證所有節點的連通性,在圖1中,當存儲節點斷開連接后,用戶1和用戶2分別向2個存儲節點返回了更新值x=A和x=B。當用戶3需要讀取變量x的值時,該用戶將無法確定其當前值。

2.2 讀寫一致性算法的目標

為了避免讀寫數據不一致的情況,需要部署讀寫一致性算法來保證數據的可用性。具體來說,讀寫一致性算法需要滿足以下特性:

(1)可靠性:在存儲節點未出現拜占庭錯誤的情況下,分布式存儲系統不能回復錯誤信息。

(2)魯棒性:在大部分存儲節點正常在線并能相互通信的情況下,通過讀寫一致性算法,能保證用戶正常讀寫數據。

在此基礎上,開發人員需要根據存儲應用場景的需求部署相應的讀寫一致性算法來保證數據讀寫操作的性能。

2.3 部署讀寫一致性算法面臨的挑戰

雖然讀寫一致性算法能夠保證數據讀寫操作的正確性,研究人員依然需要根據應用場景選擇合適的讀寫一致性策略。具體來說,部署讀寫一致性算法時將面臨以下挑戰:

(1)為了保證用戶從節點中讀寫數據的正確性,讀寫一致性算法通常要求分布式存儲系統執行多次數據傳輸操作,以確定存儲節點的狀態[3]。這些傳輸操作往往會帶來較大的數據讀寫時延,影響其上在線應用對用戶的服務質量。

(2)讀寫一致性算法通常需要復雜通信協議。例如,Raft算法[6]需要選舉主節點來協調存儲節點共同完成數據讀寫操作。在跨數據中心場景中,在分布式存儲系統選舉出的主節點網絡狀態較差的情況下,主節點的通信時延會嚴重影響讀寫用戶數據的性能[7]。

(3)讀寫一致性算法需要保證存儲數據的可靠性。在出現部分存儲節點失效的情況下,讀寫一致性算法需要保證分布式存儲系統能完成數據讀寫操作[5]。因此,讀寫一致性算法需要設計一定的冗余機制,保證分布式存儲系統可以穩定地向用戶端設備提供存儲服務。

3 讀寫一致性算法的實現機制

本節簡述3種類型讀寫一致性算法實現機制。

3.1 基于中心控制的讀寫一致性算法

基于中心控制的讀寫一致性算法[1]部署額外的控制節點來保證讀寫數據的正確性。由于實現較為簡單,該類算法被廣泛部署于分布式存儲系統。例如,HDFS(Hadoop Distributed File System)[1]使用名字節點(Name Node)和數據節點(Data Node)組成主從結構。

為了保證讀寫一致性,控制節點定義主副本(Primacy Replica)和備用副本(Backup Replica)。分布式存儲系統可以根據主副本所存儲內容來確定當前值。即使主副本失效,控制節點依然能根據多個備用副本數據確定當前值,定義新的主副本,保證數據可用性。圖2展示了HDFS存儲系統中3副本數據寫入過程[1]。

Figure 2 Write process for three replicas in HDFS

在數據寫入過程中,用戶優先寫入元數據到控制節點,再更新數據節點中副本內容。分布式存儲系統讀取主副本來確定當前存儲數據的值。當數據失效時,通過讀取備用副本信息和版本信息能夠恢復出失效的主副本數據。

基于中心控制的讀寫一致性算法被廣泛應用于早期分布式存儲系統,以保證數據讀寫一致性,如HDFS[1]和GFS(Google File System)[8]。由于數據讀寫過程需要訪問控制節點存儲的元數據,控制節點失效往往會嚴重影響存儲服務的可用性。

雖然基于中心控制的讀寫一致性算法能夠保證讀寫數據的正確性,但是主副本的存儲節點往往會成為性能瓶頸,為了保證數據寫入的性能,讀寫一致性算法需要引入相應的機制。

此外,基于中心控制的讀寫一致性算法主要通過控制節點協調其他參與節點來完成數據讀寫操作[1],包括兩階段提交協議2PC(Two-Phase Commit)[9]和三階段提交協議3PC(Three-Phase Commit)[10]。基于中心控制的讀寫一致性算法依然需要在控制節點失效時保證分布式存儲系統能夠正確地執行數據讀寫操作。

3.2 基于消息傳遞的讀寫一致性算法

為了在控制節點失效的情況下保證分布式存儲系統依然可以有效地完成數據讀寫操作,基于消息傳遞的讀寫一致性算法[5]采用存儲節點投票的方式來將用戶數據寫入存儲節點。

基于消息傳遞的讀寫一致性算法包括3種類型的節點:提案節點(Proposer)、仲裁節點(Acceptor)和學習節點(Learner)。通過滿足以下3個條件,Paxos算法[5]能保證所有遵守通信協議的提案(Proposal)執行結果的正確性。

(1)所有提案有唯一的編號。

(2)任意2個提案P1和P2至少有1個相同的仲裁者。

(3)對于任意提案P,如果提案P的投票節點在之前的提案中同意更新變量值,那么提案P設定的變量值,需要和最近被投過贊成票的提案變量值保持一致。

根據上述3個條件,Paxos算法可以構建一個讀寫一致性的提案集合。這里使用單個變量實現一個案例來說明Paxos算法的投票過程。

假設存儲系統中存在5個仲裁節點A、B、C、D和E接收到來自存儲系統中提案節點的5條提案,提案編號為1,6,13,25和31。

圖3展示了由5個仲裁節點參與的Paxos投票過程[5]。其中,用黑體字標注的節點為回復數據值成功執行的存儲節點。這5個節點需要在2個值中選擇1個值,并將其保存到所有節點。

Figure 3 Message delivery-based consensus algorithms

提案1:第1個提案雖然有4個節點參與了提案的投票過程,但僅有節點E確認了提案信息。因此,提案1未成功通過仲裁階段,無法更新存儲節點的變量值。

提案6:由于投票的節點在之前沒有投過贊成票,提案6可以選擇不同的變量值。但是,只有節點A確認了提案信息,少于半數以上(即3票),提案6依然沒有通過。

提案13:由于節點B、C和D之前提案沒有更新過變量值,提案13可以將變量值更新為任意值。本輪節點B和節點D確認了該提案,但贊成的票數依然少于半數,提案13未通過。

提案25:由于提案節點收到3個節點A、C和D的確認信息,提案25是唯一更新變量值成功的提案。其中,節點A和節點E分別在提案6和提案1上更新了數值且提案6的編號更接近提案25的。提案25更新的變量值應當與提案6所更新的變量值相同。

提案31:為了保證所有節點存儲的變量值都相同,存儲節點需要與其他節點同步變量值。提案31將已經更新的變量值同步到另外2個節點。

在上述例子中,通過滿足3個讀寫一致性條件,分布式存儲系統可以實現全局提案集合的讀寫一致性。在實際存儲系統中,提案節點需要根據生成的提案編號,保證所有的存儲節點可以高效地完成相應的數據更新操作。

為了簡化數據寫入過程,Paxos算法采用以下步驟來完成數據寫入過程:

(1)準備階段:提案節點生成全局唯一的提案編號,向所有的仲裁節點發送該編號。仲裁節點根據收到的編號信息,判斷是否接受這條提案,相應的處理結果回復給提案節點。

(2)仲裁階段:提案節點向仲裁節點發送提案變量值,仲裁節點接收變量值后返回確認信息。當收到大部分仲裁節點對變量值更新的確認消息后,提案節點標記該提案已通過。

(3)學習階段:提案節點將更新的變量值發送到沒有參與到仲裁過程的其他的學習節點,從而完成所有存儲節點變量值的更新操作。

通過上述步驟,Paxos算法保證了分布式存儲系統讀寫數據的正確性。由于讀寫過程中任一節點都能夠作為提案節點發起寫入操作,Paxos算法能夠有效地避免單個節點成為性能瓶頸,從而提升數據讀寫操作的性能。

圖4展示了Paxos算法執行過程示意圖[12]。

Figure 4 Transmission process with Paxos

為了保證全局提案編號的唯一性和有序性,當仲裁節點收到編號為ir的準備請求后,仲裁節點將針對接收到的提案作出以下2個承諾:

(1)仲裁節點不再接收提案編號ip小于或等于當前提案編號的提案請求。

(2)仲裁節點不再接收提案編號i′r小于當前提案編號ir的準備請求。

雖然基于消息傳遞的讀寫一致性算法可以從理論上保證數據讀寫操作的正確性,但是基于消息傳遞的讀寫一致性算法需要較為復雜的通信規則,往往會增加實現算法的難度,難以保證存儲數據的可靠性。因此,如何降低Paxos算法實現的復雜度,成為了保證數據讀寫操作可靠性的關鍵問題。

3.3 基于選舉的讀寫一致性算法

基于選舉的讀寫一致性算法[6]通過在在線節點中確定主節點的方式來實現在保證讀寫數據正確性的前提下降低算法復雜性。這里使用Raft算法[6]作為示例來介紹基于選舉的讀寫一致性算法的執行過程。通過從在線從節點中選舉出主節點,Raft算法能夠保證主從節點之間的讀寫數據一致性。

圖5展示了Raft算法主從節點的示意圖[6]。

Figure 5 Leader and followers node in Raft

Raft算法包括以下3種類型的節點:從節點、候選節點和主節點。

通過在存儲節點中維護本地狀態機,Raft算法使用選舉機制來實現每個存儲節點在從節點、候選節點和主節點3種類型節點之間的狀態轉換操作。分布式存儲系統需要周期性地執行選舉操作來確定主節點,以協調數據讀寫操作,從而保證提供持續的數據存儲服務。

圖6展示了Raft算法選舉過程的狀態機[6]。

Figure 6 State machine of Raft algorithm selection process

由圖6可知,Raft算法中的存儲節點通過以下狀態轉移規則切換其狀態類型。

(1)從節點:在分布式存儲系統上線時,所有在線節點以從節點狀態等待進入選舉過程。當新的選舉周期開始時,從節點將成為候選節點參與讀寫一致性算法主節點投票選舉過程。

(2)候選節點:候選節點收到大多數節點的支持票后將成為主節點。當發現分布式存儲系統中已經存在主節點或選舉周期過期時,候選節點將回退成為從節點等待下一個選舉周期,再次參與主節點選舉過程。

(3)主節點:在收到大多數節點的支持票時,候選節點會將自己的狀態設置為主節點。為了保證分布式存儲系統主節點的唯一性,當主節點在通信過程中發現存在更高優先級的主節點后,會將自己的狀態設為從節點。

每隔一定周期后,分布式存儲系統會重新選舉主節點,負責協調存儲節點處理用戶端發出的數據讀寫請求。

圖7展示了Raft算法周期示意圖[6]。

Figure 7 Terms of selection process in Raft algorithm

雖然Raft算法可以通過選舉過程確定主節點來解決讀寫一致性問題,分布式存儲系統依然需要通過讀寫主節點存儲的內容來確定保存在分布式存儲系統中的各個變量的當前值。

Raft算法使用復制狀態機來保證所有的主從節點數據的一致性。圖8展示了Raft算法日志數據提交過程[6],包括3個存儲節點和2個變量,變量x和變量y。每一個日志項包括2部分內容,提交時的周期值和變量的改變值。這里將3個節點分別記為主節點、從節點1和從節點2。

Figure 8 Submission process of Raft algorithm log data

在圖8中,使用深淺不同的顏色表示在各個周期中用戶端設備提交的數據寫入請求。為了提升Raft算法的執行效率,不同于經典的兩階段提交算法,狀態機復制過程中不要求所有在線節點存儲的日志數據都為當前最新版本,僅需保證多數節點確認數據寫入,即認為存儲系統已提交了變量值。在用戶訪問主節點存在較大時延的情況下,主節點會成為整個分布式存儲系統數據讀寫操作的性能瓶頸。

3.4 讀寫一致性算法實現機制比較

在部署分布式存儲系統的過程中,開發人員需要根據應用場景選擇適合的讀寫一致性算法和性能優化方案,調整讀寫一致性算法的存儲和通信機制來保證數據讀寫操作的性能。表1比較了3種類型讀寫一致性算法的實現難度、算法機制和容錯性方面的特點。

Table 1 Comparison of the mechanism of different consensus algorithms

4 讀寫一致性算法性能優化方案

本節主要綜述使用副本和糾刪碼2種常見的數據存儲方案的情況下,讀寫一致性算法的實現機制和性能優化方案。

4.1 分布式存儲系統的數據存儲機制

為了適應不同應用場景的存儲需求,分布式存儲系統往往采用副本和糾刪碼2種數據存儲機制來保證存儲數據的可靠性。

(1)副本存儲方案:通過將用戶數據的多個副本存儲到多個存儲節點來保證數據可靠性。

(2)糾刪碼存儲方案:將用戶數據切片生成數據分片,編碼數據分片生成多個檢驗分片,并將這些分片存儲到多個存儲節點,從而保證分布式存儲系統的數據可靠性。

4.2 基于副本的讀寫一致性算法性能優化

為了保證存儲在多個節點副本數據的一致性,研究人員提出了基于消息傳遞的讀寫一致性算法。如Lamport[5]提出了Paxos算法,以保證存儲節點數據的讀寫一致性。文獻[12]介紹了Paxos算法的運行機制。Chandra等[13]討論了證明Paxos算法代碼正確的方法。Lamport[14]提出了異步Paxos算法,通過并行化讀寫數據來減小讀寫操作時延。類似工作還有Fast-Paxos[15]、Vertical Paxos[16]、Cheap-Paxos[17]、DPaxos[18]、Flexible Paxos[19]和EPaxos[20]。然而,這些算法需要使用較為復雜的讀寫一致性協議,通常會產生額外的數據傳輸開銷,降低分布式存儲系統數據讀寫操作的性能。

為了提升分布式存儲系統讀寫一致性算法的執行效率,研究人員提出了多種讀寫一致性算法性能優化方案。如Junqueira等[22]提出的ZAB(Zookeeper Atomic Broadcasts)協議通過廣播機制來保證讀寫性能。讀寫一致性系統組件ZooKeeper[23]使用ZAB協議來提升讀寫操作的性能[24]。Brenner等[25]提出了SecureKeeper框架,引入因特爾SGX (Software Guard eXtensions)指令集提升ZAB協議的安全性。Frommgen等[26]提出在ZooKeeper運行過程中切換讀寫一致性算法來保證服務質量。史博軒等[27]使用ZooKeeper構建統一信任錨模型。Gray等[28]提出了租約機制Leases方案來提升緩存服務的性能。Moraru等[29]使用Go語言實現了分布式租約機制[30]。Decandia等[31]提出了Dynamo存儲系統,部署了NWR算法[32]來調整讀寫一致性算法執行過程中副本數量n、寫入副本數量w和讀取副本數量r等參數來適應不同的分布式存儲系統應用場景。王華進等[32]分析了NWR算法在不同參數情況下隊列解析開銷和數據寫入時延。Huang等[33]使用排隊論分析可能導致Cassandra數據庫短時間數據不一致的原因。朱濤等[34]總結了讀寫一致性算法和數據可用性的關系。Wang等[35]通過測試HBase[36]和Cassandra[37]2種常用數據庫系統來分析副本數據對數據讀寫操作性能的影響。類似工作還有Scatter[38]、ZooNet[39]、COPS(Clusters of Order-Preserving Servers)[40]、WPaxos[41]、Spanner-RSS(Spanner Regular Sequential Serializability)[42]、PaxosLease[43]和Volume leases[44]等。

為了提升存儲系統軟件的可靠性,研究人員使用多種方法來降低基于消息傳遞的讀寫一致性算法的實現復雜度。如Lamport等[45]使用了可重設置狀態機來實現讀寫一致性算法,并證明了其算法的正確性。Ongaro等[6]提出了Raft算法來實現主節點選舉和主從節點數據同步過程。Lampson[4]分別總結了Paxos在經典讀寫一致性問題、磁盤讀寫一致性問題和拜占庭讀寫一致性問題場景的案例。這些讀寫一致性機制也被部署到了ZooKeeper[23]和Chubby[46]等分布式讀寫一致性管理系統中。

在此基礎上,研究人員針對各種分布式存儲系統應用場景提出了相應的讀寫一致性算法性能優化方案。如Li等[47]提出了NOPaxos(Network Ordered Paxos),使用網絡層廣播協議來減少讀寫一致性算法執行過程的數據傳輸開銷。Mahmoud等[48]提出了Replicated Commit來提升跨數據中心通信性能。Nawab等[49]推導出了跨數據中心數據提交過程消耗時間下限。Guo等[50]設計了面向SQL語義的讀寫一致性方案來提升并行化事務處理性能。類似工作還有Dynamo[31]、Cassandra[37]、MegaStore[51]、Spanner[52]、FSS (File Storage Service)[53]、Volley[54]、Harp[55]、Mencius[56]、etcd[57]和MDCC(Multi-Data Center Consistency)[58]等。雖然能保證讀寫數據的一致性,基于副本的讀寫一致性算法在執行過程中需要傳輸大量的用戶數據,會帶來較大的數據傳輸開銷。為了保障數據讀寫操作的執行效率,糾刪碼作為一種能減少傳輸開銷的機制被用于減少讀寫過程中的傳輸開銷。

4.3 基于糾刪碼的讀寫一致性算法性能優化

糾刪碼作為一種常見的數據可靠性保障機制被廣泛部署到了分布式存儲系統中來保存用戶數據。如Reed等[59]提出了RS(Reed-Solomon)編碼來保證數據可靠性。Dimakis等[60]提出了再生碼來減少數據修復操作的網絡傳輸開銷。Shum等[61]提出了合作再生編碼來減少多節點失效時數據修復操作的網絡傳輸開銷。Huang等[62]提出了LRC (Local Reconstruction Codes)來減少單存儲節點數據失效情況下數據修復操作的網絡開銷。Shen等[63]使用網絡編碼來加速云際存儲系統數據寫入操作的性能。類似的工作還有Core[64]、CaCo(Cauchy Coding)[65]、PUSH[66]、AONT-RS(All-Or-Nothing Transform with Reed-Solomon coding)[67]、CAONT-RS(Convergent AONT-RS)[68]、CDStore[69]、UniDrive[70]和RDOR(Row-Diagonal Optimal Recovery)[71]等。

為了保證數據讀寫操作的執行效率,研究人員提出了基于糾刪碼的讀寫一致性算法來減少數據讀寫過程中傳輸的數據量。如Mu等[72]提出了RS-Paxos算法,引入了糾刪碼機制來減少Paxos算法執行過程中數據傳輸量。Wang等[73]提出了CRaft算法來將Raft算法部署到糾刪碼存儲系統中。由于基于選舉的讀寫一致性算法需要通過主節點讀寫數據,會降低網絡傳輸性能,Uluyol等[7]提出了Pando方案來高效部署Paxos算法,優化糾刪碼存儲系統跨數據中心的數據讀寫時延,且已被應用到了聯邦學習[74]等場景中。通過傳輸編碼后的用戶數據,基于糾刪碼的讀寫一致性算法能夠有效減少執行數據讀寫操作過程中網絡帶寬資源的消耗量。然而,糾刪碼也帶來了數據修復操作帶寬消耗量大和數據讀寫操作消耗時間長等一系列問題[75]。

為了保證數據可靠性,提升用戶讀寫數據的效率,研究人員提出了多種性能優化方案提升在各個應用場景中糾刪碼存儲系統執行數據修復操作和數據讀寫操作的性能。Chen等[76]提出了Giza來保證跨數據中心的糾刪碼對象存儲系統的數據讀寫一致性。Chen等[77]提出了副本和糾刪碼混合存儲方案來提升內存對象存儲系統的數據讀寫操作性能。Sathiamoorthy等[75]將再生碼部署到HDFS存儲系統中,以減少數據修復操作的網絡傳輸開銷。Shen等[78]提出了跨機架的路由方案來加速多個存儲節點的數據寫入過程。Shi等[79]設計了UMR-EC(Unified and Multi-Rail Erasure Coding)編碼架構優化數據讀寫操作的執行過程。Renesse等[80]綜述了Paxos算法相關讀寫一致性算法。

4.4 讀寫一致性算法性能比較

為了滿足應用場景的存儲需求,開發人員需要了解讀寫一致性算法的系統開銷和相應的實現機制。本節將分析各種讀寫一致性算法的存儲空間和容錯性能。本節將容錯節點數量定義為在執行數據讀寫操作過程中容忍失效節點的數量,該參數越大說明讀寫一致性算法可以在越多節點失效的情況下執行讀寫操作。

表2比較了主要讀寫一致性算法的存儲開銷、容錯節點數量及其實現機制。表2中,存儲開銷代表存儲數據所消耗磁盤空間大小,n為存儲節點的數量,r為設定讀取節點的數量,k為數據節點的數量。假設用戶將數據量為M字節的文件保存到n個存儲節點中。分布式存儲系統能夠使用副本和糾刪碼機制通過以下步驟完成數據讀寫操作:

在副本存儲情況下,每一個節點的數據量為M字節。由于存在n個節點,分布式存儲系統共存儲了n*M字節數據。由于所有節點都保存和傳輸重復數據,副本機制通常會消耗大量存儲空間和網絡帶寬,影響數據讀寫操作的性能。在糾刪碼存儲情況下,用戶端設備將文件分成k個數據分片,將數據分片編碼生成m個校驗分片,并存儲到n=k+m個存儲節點中。其中,每一個存儲節點將保存M/k字節數據,所以n個存儲節點共保存(n*M)/k字節數據。

Table 2 Comparison of performance of different consensus algorithms

由于糾刪碼機制將數據編碼保存到多個存儲節點,相較于副本機制,分布存儲系統能夠在消耗更小的存儲空間的前提下保存相同的數據內容。然而,基于糾刪碼的讀寫一致性算法需要更多在線節點和更大計算開銷才能正確地完成數據讀寫操作,降低了存儲數據的可用性。

5 應用場景對讀寫性能的影響

本節將比較2種應用場景(即單數據中心分布式存儲系統和跨數據中心云際存儲系統)中影響讀寫一致性算法性能的因素。

5.1 讀寫一致性算法的應用場景

開發人員需要充分了解各種算法的性能,才能選擇適合當前存儲應用場景的讀寫一致性算法。具體來說,讀寫一致性算法部署在以下2種分布式存儲應用場景:

(1)單數據中心分布式存儲系統:在寫入數據量較大的情況下,前端服務器數據寫入和數據同步過程消耗的時間占數據寫入時間的很大一部分[8]。為了保證讀寫數據的性能,開發人員需要優化讀寫操作執行流程,以減少數據讀寫過程中的網絡通信開銷。

(2)跨數據中心云際存儲系統:為了避免單數據中心可能出現的數據泄露和丟失等問題,跨數據中心云際存儲系統將數據存儲在多個數據中心。由于數據被存儲在不同地理位置的云存儲節點,需要充分考慮各個云存儲節點之間的傳輸時延。

5.2 單數據中心分布式存儲系統

由于單數據中心需要運行多種業務,存儲節點之間的可用帶寬通常非常有限。圖9展示了包括1個用戶和4個存儲節點的分布式存儲系統的數據寫入操作的執行過程:

在圖9a中,不同的存儲節點之間帶寬具有較大的差異性,需要充分利用用戶端設備和存儲節點之間的帶寬資源。

圖9b展示了傳統數據寫入方案的路由。由于用戶端設備直接將數據寫入到存儲節點,寫入過程通常會受到瓶頸鏈路帶寬的限制。

在圖9c中,通過合理設計數據傳輸路由,分布式存儲系統可以有效避開網絡拓撲的瓶頸鏈路,保證數據寫入操作的性能。

5.3 跨數據中心云際存儲系統

為了保證在跨數據中心場景中數據讀寫操作的性能,部署讀寫一致性算法時,存儲系統設計人員需要注意以下要點:

(1)為了保證用戶訪問的性能,前端服務器應當盡量靠近存儲節點,減少網絡傳輸時延。

(2)任意2個前端服務器至少需要訪問1個公共的存儲節點來保證數據一致性。

圖10展示了跨數據中心數據讀寫過程。

Figure 9 Example of the route strategies for the write operations in distributed storage systems

Figure 10 I/O process of the consensus algorithms between multiple data centers

在實際的云際存儲系統中,前端服務器訪問保存在不同存儲節點的數據的傳輸時延往往存在著較大差異性,因此,前端服務器需要選擇訪問傳輸時延較小的存儲節點,以保證對用戶數據訪問操作的服務質量。

6 讀寫一致性算法部署建議和展望

本節將總結部署讀寫一致性算法需注意的要點以及學術研究和工業領域亟需解決的問題。

6.1讀寫一致性算法部署建議

在實際的生產系統中,開發人員在部署讀寫一致性算法時應當注意以下方面:

(1)根據應用場景中數據寫入請求數據量大小的差異,開發人員需要分析讀寫一致性算法中各個階段在數據讀寫操作中的時間占比。為了保證數據讀寫操作的執行效率,分布式存儲系統需要根據數據讀寫操作的特征部署合適的讀寫一致性策略和性能優化方案。

(2)根據分布式存儲系統的數據存儲機制,開發人員需要選擇合適的讀寫一致性算法來滿足存儲應用的性能需求。由于副本和糾刪碼存儲機制有較大的差異,分布式存儲系統需要部署對應的讀寫一致性算法來適應各種存儲機制下數據讀寫操作的性能。

(3)根據應用網絡環境的特性,包括傳輸時延和網絡帶寬,開發人員需要優化讀寫一致性算法的通信機制來減小數據傳輸帶來的開銷。針對不同的存儲應用場景,分布式存儲系統需要引入相應的傳輸策略來減小讀寫一致性算法數據讀寫操作的傳輸開銷。

6.2 讀寫一致性算法研究工作展望

雖然當前讀寫一致性算法能保證數據讀寫操作的性能,但是當前讀寫一致性算法依然存在諸多問題,如網絡適應能力弱和難以適應不同大小的數據讀寫請求。為了滿足用戶讀寫性能需求,需要部署以下優化方案:

(1)高自適應存儲機制:隨著承載服務類型的增加,業務系統通常提供多種不同的在線服務。由于單獨使用副本機制和糾刪碼機制適合的應用場景有限,分布式存儲系統需部署多種存儲機制融合的讀寫一致性算法,動態調整其存儲機制,以適應日益復雜的應用場景。

(2)動態調整網絡路由策略:由于存儲節點之間的網絡通常存在較大異構性,讀寫一致性算法需要根據分布式存儲系統的網絡狀態調整存儲節點之間的網絡路由策略,以保證分布式存儲系統數據讀寫操作的性能。

(3)構建智能讀寫一致性算法:在執行當前讀寫一致性算法過程中,存儲節點通常使用固定通信協議來保證讀寫操作的正確性,難以滿足服務質量需求。通過引入人工智能方案分析過往的用戶行為和存儲集群狀態,智能讀寫一致性算法能夠有效提升數據讀寫操作的性能。

6.3 工業界讀寫一致性算法性能優化展望

雖然當前工業界已廣泛部署了讀寫一致性組件庫(如ZooKeeper[23])來保證分布式存儲系統執行數據讀寫操作的正確性,但是這些組件庫存在應用場景單一和讀寫開銷較大等問題,依然有以下值得進一步開展研究的方向:

(1)測試讀寫一致性算法性能: 雖然研究人員已開展了大量的讀寫一致性算法性能優化工作,但現有研究中依然缺少對讀寫一致性算法的性能定量測試比較工作。根據讀寫一致性算法的實現機制,亟需構建大量定量系統性實驗來充分測量讀寫一致性算法的性能,便于開發人員選擇適合存儲應用場景的讀寫一致性算法。

(2)構建副本和編碼混合讀寫一致性機制:由于不同存儲機制適用的應用場景具有較大的差異,現有適用單一存儲機制的讀寫一致性算法難以滿足多種用戶的數據讀寫需求,設計副本和編碼混合的讀寫一致性算法將會有效擴大讀寫一致性算法的適用范圍。

(3)引入新硬件設備減少讀寫開銷:隨著新的時鐘硬件(如銫原子鐘[81])在數據中心的應用,存儲節點可精確地獲取當前時間,更容易實現時鐘同步操作。如何構建適應新存儲硬件設備的讀寫一致性方案也將成為提升讀寫操作性能的重要研究方向。

7 結束語

本文綜述了分布式存儲系統中的讀寫一致性算法的實現機制,并分析了這些算法適宜的應用場景,從而為開發人員部署讀寫一致性算法提供了相應的理論依據。在總結讀寫一致性算法挑戰性的基礎上,還總結了讀寫一致性算法主要的實現方案,綜述了相關的性能優化工作。在此基礎上,本文分析了單數據中心分布式存儲系統和多數據中心云際存儲系統2種應用場景中各種參數對讀寫一致性算法數據寫入操作性能的影響,并給出了在這些應用場景中部署讀寫一致性算法需注意的要點,展望了未來可能的性能優化方案。

猜你喜歡
一致性
注重整體設計 凸顯數與運算的一致性
遼寧教育(2022年19期)2022-11-18 07:20:42
關注減污降碳協同的一致性和整體性
公民與法治(2022年5期)2022-07-29 00:47:28
商用車CCC認證一致性控制計劃應用
注重教、學、評一致性 提高一輪復習效率
對歷史課堂教、學、評一體化(一致性)的幾點探討
IOl-master 700和Pentacam測量Kappa角一致性分析
基于CFD仿真分析的各缸渦流比一致性研究
ONVIF的全新主張:一致性及最訪問控制的Profile A
方形截面Rogowski線圈的一致性分析
電測與儀表(2016年7期)2016-04-12 00:22:18
基于事件觸發的多智能體輸入飽和一致性控制
主站蜘蛛池模板: 欧美不卡二区| 久久国产精品77777| 欧美国产菊爆免费观看| 97成人在线视频| 999精品色在线观看| 三区在线视频| 日韩精品成人在线| 五月天久久婷婷| 熟女日韩精品2区| 中文字幕人成乱码熟女免费| 全免费a级毛片免费看不卡| 久久亚洲国产最新网站| 欧美专区日韩专区| 久久精品亚洲专区| 精品一区二区三区水蜜桃| 日本尹人综合香蕉在线观看| 在线国产欧美| 国产精品原创不卡在线| 九一九色国产| 日韩精品一区二区三区大桥未久| 毛片在线看网站| 国产高清不卡| 国产精品视频久| 女人av社区男人的天堂| 欧美精品成人| 人妖无码第一页| 亚洲欧美日本国产综合在线| 制服丝袜一区| 女人18毛片一级毛片在线 | 丁香六月激情综合| 免费人成网站在线观看欧美| 青青草原偷拍视频| 99人体免费视频| 大陆国产精品视频| 精久久久久无码区中文字幕| 午夜欧美理论2019理论| 欧美日韩资源| 国产精品尤物在线| 成人国产一区二区三区| 国产真实二区一区在线亚洲 | 一本无码在线观看| 日韩精品毛片| 欧美a级完整在线观看| 亚洲欧美自拍一区| 欧美亚洲中文精品三区| 久久精品人人做人人综合试看| 国产一线在线| 色综合国产| а∨天堂一区中文字幕| 久久精品国产国语对白| 亚洲综合专区| 在线观看无码a∨| 18禁不卡免费网站| 精品国产aⅴ一区二区三区| 内射人妻无码色AV天堂| 日韩黄色在线| 亚洲a免费| 老司国产精品视频91| 思思热精品在线8| 在线日韩一区二区| 国产乱人伦AV在线A| 97狠狠操| 亚洲精品视频网| 午夜视频www| 亚洲成人网在线播放| 久久婷婷六月| 激情影院内射美女| 亚洲婷婷丁香| 久久久精品国产SM调教网站| 欧美色香蕉| 日韩欧美中文在线| 亚洲中文久久精品无玛| 国产精品一区在线观看你懂的| 国产资源免费观看| 99r在线精品视频在线播放| 久青草免费在线视频| 污污网站在线观看| 日韩精品一区二区三区免费| 在线人成精品免费视频| 五月天久久综合| 国产一二三区视频| 青青草综合网|