basic paxos,multi paxos
1.basic paxos:
集群內(nèi)所有節(jié)點(diǎn)如何就一個(gè)值達(dá)成共識(shí)
角色:
1.提議者:提出提議(proposal).
2.接受者:對(duì)于提議要給出自己的回答.
3.學(xué)習(xí)者:接受達(dá)成共識(shí)的值,不參與投票和提議.
?
注意
1.除了學(xué)習(xí)者節(jié)點(diǎn).每個(gè)節(jié)點(diǎn)都可以生成提議(proposal)和接受提議
2.共識(shí)的達(dá)成需要兩階段協(xié)議
3.不需要所有節(jié)點(diǎn)同意,過半同意即可.
?
流程:
1.提議一般是節(jié)點(diǎn)生成的.生成的提議可有使用p(id,value).其中id是提議編號(hào).
2.一個(gè)節(jié)點(diǎn)生成提議后,會(huì)向所有節(jié)點(diǎn)發(fā)出確認(rèn)的消息,消息只需要攜帶id即可.注意:這里只是向所有節(jié)點(diǎn)確認(rèn),我這個(gè)提議是不是合法.那么怎么算合法呢?就是id是不是最大的!這個(gè)是所有節(jié)點(diǎn).包含自己
3.當(dāng)節(jié)點(diǎn)收到提議確認(rèn)后,需要按照如下的原則進(jìn)行回應(yīng)
- 如果節(jié)點(diǎn)已經(jīng)通過某提議,那么返回最大的提案編號(hào),否則返回空,并承諾之后,不會(huì)響應(yīng)任何提議小于該編號(hào)的請(qǐng)求
- 如果提議編號(hào)小于該節(jié)點(diǎn)收到過的最大編號(hào),那么不去響應(yīng)
?
例子:
有 ABC三個(gè)節(jié)點(diǎn),用戶提出兩個(gè)提議.(1."a"),(3,"b").
1.prepare階段
- A,B先收到(1,)提議,返回?zé)o提議.并承諾不會(huì)接受小于等于1的提議; C先收到(5,),返回?zé)o提議,.并承諾不會(huì)接受小于等于5的提議;
- A,B收到(5,)提議,5>1,因此作出回應(yīng),因?yàn)楫?dāng)前尚無已通過提議,因此還是返回空,并承諾,之后不會(huì)接受小于5的提議;C接收到(1,)的提議,1<5.因此不做回應(yīng)
2.commit階段
由于在第一階段,兩個(gè)提議分別收到了AB的正確響應(yīng),ABC的正確響應(yīng).因此都成功的進(jìn)入了commit階段
- A,B,C收到了(1,"a")的提議.但是此時(shí)已經(jīng)承諾了,不會(huì)再處理小于5的提議.因此不響應(yīng);
- A,B,C收到了(5,"b")的提議.滿足要求,所以成功設(shè)置為5.
?
總結(jié):
1.basic paxos通過兩步提交達(dá)成了共識(shí)
2.通過過半機(jī)制,可以允許節(jié)點(diǎn)故障
?
2.multi paxos
multi paxos是對(duì)多個(gè)值進(jìn)行協(xié)商.但是想想,對(duì)一個(gè)值進(jìn)行協(xié)商的basic paxos,步驟已經(jīng)很多了.
1.需要兩階段提交
2.每個(gè)節(jié)點(diǎn)都能提交協(xié)議.如果a提交了協(xié)議,響應(yīng)失敗.那么a再增加提議編號(hào),重新提交,會(huì)有什么后果.那就沒完了.惡性競爭了.
因此multi paxos對(duì)basic paxos做出了優(yōu)化
leader機(jī)制
只有l(wèi)eader可以產(chǎn)生提議.就不會(huì)產(chǎn)生提議沖突,也就不用去prepare了.那么怎么選舉出leader呢?
- chubby使用basic paxos產(chǎn)生leader.chubby作為第一個(gè)生成落地的,讀寫都從leader節(jié)點(diǎn)走強(qiáng)一致.性能不好
- zab通過投票產(chǎn)生leader(投票池,term,事務(wù)id,節(jié)點(diǎn)id).讀可以在follow節(jié)點(diǎn)(最終一致性),寫在leader節(jié)點(diǎn)順序執(zhí)行(強(qiáng)一致性),對(duì)同一個(gè)客戶端的請(qǐng)求是排隊(duì)處理的(參看zk源碼)
- raft選舉機(jī)制(隨機(jī)時(shí)間,term,事務(wù)id優(yōu)先,先到先得).可以參看(etcd源碼系列)
當(dāng)領(lǐng)導(dǎo)者處于穩(wěn)定狀態(tài)時(shí),省掉準(zhǔn)備階段,直接進(jìn)入接受階段---蘭伯特說的,不是魯迅
總結(jié)下:
1.multiPaxos蘭伯特只是提出了思想,并沒有具體實(shí)現(xiàn),因此各個(gè)系統(tǒng)各有各的做法,不過目前來看raft簡單易懂.容易實(shí)現(xiàn)
2.減少非必須的協(xié)商,提高效率.
?
總結(jié)
以上是生活随笔為你收集整理的basic paxos,multi paxos的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机实操考试题库和答案,计算机一级操作
- 下一篇: 从App Store的评分,再看钉钉、企