免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

【翻譯】Raft 共識算法:集群成員變更

轉(zhuǎn)載請注明出處:https://www.cnblogs.com/morningli/p/16770129.html
之前都在集群配置是固定的(參與共識算法的server集合)假設(shè)下討論raft 。在實(shí)踐中,偶爾有需要改變配置,比如說當(dāng)server故障時(shí)替換server,或者改變復(fù)制級別 。雖然可以通過下線整個(gè)集群,更新配置文件,重啟集群來實(shí)現(xiàn),但是這樣會導(dǎo)致集群在改變的過程中一直不可用 。另外,人工操作存在操作錯(cuò)誤的風(fēng)險(xiǎn) 。為了避免這樣的問題,raft通過自動化配置變更并將它包含到raft共識算法中 。

【翻譯】Raft 共識算法:集群成員變更

文章插圖
為了保證配置變更機(jī)制是安全的,必須保證不存在轉(zhuǎn)換過程中有兩個(gè)leader在同一個(gè)term內(nèi)被選舉出來 。不幸的是,server直接從老配置轉(zhuǎn)換到新配置的任何方法都是不安全的 。不可能自動一下子自動切換所有的server,所以集群在轉(zhuǎn)換期間存在分裂成兩個(gè)獨(dú)立的大多數(shù)的可能性(見 Figure 10) 。
【【翻譯】Raft 共識算法:集群成員變更】為了保證安全性,配置變更必須使用兩階段方法 。有不同的方式來實(shí)現(xiàn)兩階段 。舉個(gè)例子,一些系統(tǒng)使用第一階段禁用老的配置,這樣系統(tǒng)無法處理客戶端請求;然后第二階段啟用新的配置 。在raft集群首先切換到一個(gè)過度的配置,稱為joint consensus;一旦joint consensus被提交,系統(tǒng)切換到新的配置 。joint consensus結(jié)合了新老配置:
  • 日志記錄復(fù)制到新老配置的所有server
  • 兩個(gè)配置中任何一個(gè)server都可以作為leader
  • 達(dá)成一致(針對選舉和提交)需要分別在兩種配置上獲得大多數(shù)的支持 。
joint consensus允許各個(gè)服務(wù)器在不同時(shí)間在配置之間進(jìn)行轉(zhuǎn)換,而不會影響安全性 。此外,joint consensus允許集群在整個(gè)配置更改期間繼續(xù)為客戶端請求提供服務(wù) 。
【翻譯】Raft 共識算法:集群成員變更

文章插圖
集群配置通過復(fù)制的日志中的特殊記錄來存儲和交流;Figure 11介紹了配置變更過程 。當(dāng)leader接收到一個(gè)將配置從Cold修改為Cnew的請求時(shí),它會為joint consensus (圖中的Cold,new)將這個(gè)配置存儲成一個(gè)日志記錄并復(fù)制這個(gè)記錄 。一旦一個(gè)server將這個(gè)新的配置記錄添加到它的日志里,它以后的決定都會使用這個(gè)配置(server總會使用日志中最新的配置,無論這個(gè)配置是否提交) 。這意味著leader將會使用Cold,new的規(guī)則來決定Cold,new這個(gè)記錄什么時(shí)候是committed的 。如果leader崩潰了,一個(gè)新的leader有可能包含配置Cold或者Cold,new,取決于取勝的candidate有沒有收到Cold,new 。在這個(gè)期間,任何情況Cnew不能單方面做決定 。
一旦Cold,new已經(jīng)被提交,Cold或者Cnew都不能在沒有得到對方同意的情況下做決定的,Leader Completeness Property保證了只有包含Cold,new的記錄的server會被選為leader 。leader這是創(chuàng)建一個(gè)Cnew的日志并復(fù)制到集群中是安全的 。這個(gè)配置會在server接收到后立馬生效 。當(dāng)新的配置在Cnew的規(guī)則下被提交時(shí),老的配置已經(jīng)不重要了,不在新配置中的server可以被關(guān)停 。如Figure 11所示,不存在Cold和Cnew單方面做決定的時(shí)候 。這保證了安全性 。
配置變更還有三個(gè)問題需要解決 。第一個(gè)問題是新的server剛開始不會存儲任何日志 。如果新server被添加到集群,它們跟上日志需要一些時(shí)間,這段時(shí)間內(nèi)不能提交新的日志記錄 。為了避免這種可用性的間隔時(shí)間,raft在更新配置之前引入了額外的步驟,新加入集群的server作為一個(gè) non-voting 成員(leader復(fù)制記錄給它們,但是在大多數(shù)投票時(shí)不會將它考慮進(jìn)來) 。一旦這個(gè)新server追上集群中其他server的進(jìn)度,配置更新像上面描述的過程一樣 。

經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀