xxxxx内射xxxx,人人妻人人澡人人爽偷拍台湾,国内揄拍高清国内精品对白,在线精品视频一区二区

新聞中心

首頁 > 新聞中心 > 行業(yè)新聞 >

google分布式鎖服務(wù)Chubby中的Paxos

時間:2016-11-11 16:39:16   閱讀:

 
      一致性問題是Chubby需要解決的一個關(guān)鍵性問題,那么Paxos算法在Chubby中究 竟是怎樣起作用的呢?
 
      為了了解Paxos算法作用,需要將單個副本的結(jié)構(gòu)剖析來看,單個Chubby副本結(jié)構(gòu) 如圖2-8所示。圖2-8單個Chubby副本結(jié)構(gòu)從圖中可以看出,單個副本主要由以下三個層次組成。
 
\
 
      (1)最底層是一個容錯的日志,該日志對于數(shù)據(jù)庫的正確性提供了重要支持。不同副本上日志的一致性正是通過Paxos算法來保證的。副本之間通過特定的Paxos協(xié)議進行 通信,同時本地文件中還保存有一份同Chubby中相同的日志數(shù)據(jù),
 
      (2)最底層之上是一個容錯的數(shù)據(jù)庫,這個數(shù)據(jù)庫主要包括一個快照(Snapshot)和 一個記錄數(shù)據(jù)庫操作的重播日志(Replay-log),每一次的數(shù)據(jù)庫操作最終都將提交至曰志中。和容錯的日志類似的是,本地文件中也保存著一份數(shù)據(jù)庫數(shù)據(jù)副本?!?/span>

     (3)Chubby構(gòu)建在這個容錯的數(shù)據(jù)庫之上,Chubby利用這個數(shù)據(jù)庫存儲所有的數(shù)據(jù)。Chubby的客戶端通過特定的Chubby協(xié)議和單個的Chubby副本進行通信。
 
      由于副本之間的一致性問題,客戶端每次向容錯的曰志中提交新的值(value)時, Chubby就會自動調(diào)用Paxos構(gòu)架保證不同副本之間數(shù)據(jù)的一致性。圖2-9顯示了這個過程。
 
\
 
      結(jié)合圖2_9來看,在Chubby中Paxos算法的實際作用為如下三個過程。
 
      (1)選擇一個副本成為協(xié)調(diào)者(Coordinator)。
 
      (2)協(xié)調(diào)者從客戶提交的值中選擇一個,然后通過一種被稱為accq)t的消息廣播給所有的副本,其他的副本收到廣播之后,可以選擇接受或者拒絕這個值,并將決定結(jié)果反饋給協(xié)調(diào)者。 .
 
      (3)—旦協(xié)調(diào)者收到大多數(shù)副本的接受信息后,就認(rèn)為達(dá)到了一致性,接著協(xié)調(diào)者向相關(guān)的副本發(fā)送一個commit消息。
 
      上述三個過程實際上跟Paxos的核心思想是完全一致的,這些過程保證提交到不同副本上容錯日志中的數(shù)據(jù)是完全一致的,進而保證Chubby中數(shù)據(jù)的一致性。
 
      由于單個的協(xié)調(diào)者可能失效,系統(tǒng)允許同時有多個協(xié)調(diào)者,但多個協(xié)調(diào)者可能會導(dǎo)致多個協(xié)調(diào)者提交了不同的值。對此Chubby的設(shè)計者借鑒了Paxos中的兩種解決機制:給 協(xié)調(diào)者指派序號或限制協(xié)調(diào)者可以選擇的值。
 
      針對前者,Chubby的設(shè)計者給出了如下一種指派序號的方法。
 
      (1)在一個有n個副本的系統(tǒng)中,為每個副本分配一個idi(r) 其中0≤i(r)≤n-1.則副本的序號s= k×n+i(r),其中k的初始值為0。
 
      (2)某個副本想成為協(xié)調(diào)者之后,它就根據(jù)規(guī)則生成一個比它以前的序號更大的序號(實際上就是提高k的值),并將這個序號通過propose消息廣播給其他所有的副本。
 
      (3)如果接受到廣播的副本發(fā)現(xiàn)該序號比它以前見過的序號都大,則向發(fā)出廣播的副本返回一個promise消息,并且承諾不再接受舊的協(xié)調(diào)者發(fā)送的消息。如果大多數(shù)副本都返回了 promise消息,則新的協(xié)調(diào)者就產(chǎn)生了。
 
      對于后一種解決方法,Paxos強制新的協(xié)調(diào)者必須選擇和前任相同的值。
 
      為了提高系統(tǒng)的效率,Chubby做了一個重要的優(yōu)化,那就是在選擇某一個副本作為協(xié)調(diào)者之后就長期不變,此時協(xié)調(diào)者就被稱為主服務(wù)器(Master)。產(chǎn)生一個主服務(wù)器避免了同時有多個協(xié)調(diào)者而帶來的一些問題。
 
      在Chubby中,客戶端的數(shù)據(jù)請求都是由主服務(wù)器來完成,Chubby保證在一定的時間內(nèi)有且僅有一個主服務(wù)器,這個時間就稱為主服務(wù)器租用期(Master Lease)。如果某個服務(wù)器被連續(xù)推舉為主服務(wù)器的話,這個租約期就會不斷地被更新。租續(xù)期內(nèi)所有的客戶請求都由主服務(wù)器處理??蛻舳巳绻枰_定主服務(wù)器的位置,可以向DNS發(fā)送一個主服務(wù)器定位請求,非主服務(wù)器的副本將對該請求做出回應(yīng),通過這種方式客戶端能夠快速、準(zhǔn)確地對主服務(wù)器做出定位。
 
      需要注意的是,Chubby對于Paxos論文中未提及的一些技術(shù)細(xì)節(jié)進行了補充,所以Chubby的實現(xiàn)是基于Paxos,但其技術(shù)手段更加的豐富,更具有實踐性。但這也導(dǎo)致了最終實現(xiàn)的Chubby不是一個完全經(jīng)過理論上驗證的系統(tǒng)。
?

閩公網(wǎng)安備 35010002000114號