溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

zookeeper paxos是什么

發(fā)布時(shí)間:2022-01-15 16:36:08 來源:億速云 閱讀:202 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容主要講解“zookeeper paxos是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“zookeeper paxos是什么”吧!

先講一個(gè)故事。

從前,在國王Leslie Lamport的統(tǒng)治下,有個(gè)黑暗的希臘城邦叫paxos。城邦里有3類人,

  • 決策者

  • 提議者

  • 群眾

雖然這是一個(gè)黑暗的城邦但是很民主,按照議會(huì)民主制的政治模式制訂法律,群眾有什么建議和意見都可以寫提案交給提議者,提議者會(huì)把提案交給決策者來決策,決策者有奇數(shù)個(gè),為什么要奇數(shù)個(gè)?很簡單因?yàn)闆Q策的方式很無腦,少數(shù)服從多數(shù)。

最后決策者把剛出爐的決策昭告天下,群眾得知決策結(jié)果。

等一下,那哪里黑暗呢?問題就出在“提議者會(huì)把提案交給決策者來決策”,那么多提案決策者先決策誰的?誰給的錢多就決策誰的。

那這樣會(huì)有幾個(gè)問題,決策者那么多,怎么保證最后決策的是同一個(gè)提案,以及怎么保證拿到所有提議者中最高的報(bào)價(jià)。

聰明又貪婪的決策者想到了一個(gè)辦法:分兩階段報(bào)價(jià)

第一階段

  1. 決策者接受所有比他當(dāng)前持有報(bào)價(jià)高的報(bào)價(jià),且不會(huì)通知之前報(bào)價(jià)的人

  2. 提議者給所有決策者報(bào)價(jià),若有人比自己報(bào)價(jià)高就加價(jià),有半數(shù)以上決策者接受自己報(bào)價(jià)就停止報(bào)價(jià)。

第一階段結(jié)束的狀態(tài)

每個(gè)提議者都覺得有半數(shù)以上的大佬接受了自己的提案,很開心。而決策者集團(tuán)此刻的狀態(tài)是一致的,半數(shù)以上同意的提案只有一個(gè),這個(gè)就是報(bào)價(jià)最高的(因?yàn)楦叩目偸强梢愿采w低的),具體是誰提的who care,一致就行。

第二階段

提議者去找收過自己錢的大佬簽合同,這里有3種情況:

  1. 大佬都收了別人更高的價(jià),回去拿錢繼續(xù)賄賂,回到第一階段重新升級(jí);

  2. 大佬收到的最高報(bào)價(jià)是自己的,美滋滋,半數(shù)以上成功簽合同,提案成功;

  3. 提議者回去拿錢回來繼續(xù)賄賂的時(shí)候發(fā)現(xiàn)合同已經(jīng)被簽了且半數(shù)以上都簽了這個(gè)提案,不干了,趕快把自己的提案換成已經(jīng)簽了的提案,再去提給所有大佬,看看能不能分一杯羹遇見還沒簽的大佬。

第二階段結(jié)束的狀態(tài)

所有提議者手頭的提案都是一樣的,因?yàn)橛小摆s快把自己的提案換成已經(jīng)簽了的提案”這一步;決策者集團(tuán)所有成員最終接受的提案是一樣的。

好的目的已經(jīng)達(dá)到了,把這個(gè)提案昭告天下,讓所有群眾知道這件事。

故事說完了,用正確的姿勢再簡單介紹下paxos

paxos是什么?

Paxos是一種分布式一致性算法,用于解決分布式系統(tǒng)中一致性問題,可以說是分布式一致性的奠基石,基本所有的一致性算法都是基于它做的改造。

至于paxos的內(nèi)容,上面的故事其實(shí)已經(jīng)講得很清楚了,下面我再用專業(yè)的詞“解釋”一遍。

分布式系統(tǒng)中的節(jié)點(diǎn)通信存在兩種模型:共享內(nèi)存(Shared memory)和消息傳遞(Messages passing)。

paxos作為基于消息傳遞通信模型的分布式系統(tǒng),不可避免的會(huì)發(fā)生以下錯(cuò)誤:進(jìn)程可能會(huì)慢、被殺死或者重啟,消息可能會(huì)延遲、丟失、重復(fù),在基礎(chǔ) Paxos 場景中,先不考慮可能出現(xiàn)消息篡改即拜占庭錯(cuò)誤的情況。

Paxos算法解決的問題是在一個(gè)可能發(fā)生上述異常的分布式系統(tǒng)中如何就某個(gè)值達(dá)成一致,保證不論發(fā)生以上任何異常,都不會(huì)破壞決議的一致性。一個(gè)典型的場景是,在一個(gè)分布式數(shù)據(jù)庫系統(tǒng)中,如果各節(jié)點(diǎn)的初始狀態(tài)一致,每個(gè)節(jié)點(diǎn)都執(zhí)行相同的操作序列,那么他們最后能得到一個(gè)一致的狀態(tài)。

為保證每個(gè)節(jié)點(diǎn)執(zhí)行相同的命令序列,需要在每一條指令上執(zhí)行一個(gè)“一致性算法”以保證每個(gè)節(jié)點(diǎn)看到的指令一致。一個(gè)通用的一致性算法可以應(yīng)用在許多場景中,是分布式計(jì)算中的重要問題。

在paxos算法中,分為4種角色:

  • Acceptor:決策者

  • Proposer :提議者

  • Client:產(chǎn)生議題者(群眾)

  • Learner:最終決策學(xué)習(xí)者(群眾)

zookeeper paxos是什么

階段一

  1. Proposer向半數(shù)以上的Acceptor發(fā)送Prepare請求并附上編號(hào)N。

  2. 若Acceptor收到一個(gè)編號(hào)為N的Prepare請求,且N大于該Acceptor已經(jīng)響應(yīng)過的所有Prepare請求的編號(hào),那么它就會(huì)將它已經(jīng)接受過的編號(hào)最大的提案(如果有的話)作為響應(yīng)反饋給Proposer,同時(shí)該Acceptor承諾不再接受任何編號(hào)小于N的提案。

  3. Proposer若沒有得到半數(shù)以上Acceptor的響應(yīng),則編號(hào)+1繼續(xù)發(fā)起請求。

階段二

  1. 如果Proposer收到半數(shù)以上Acceptor對其發(fā)出的編號(hào)為N的Prepare請求的響應(yīng),那么它就會(huì)發(fā)送一個(gè)[N,提案]Accept請求給半數(shù)以上的Acceptor。

  2. 如果Acceptor收到一個(gè)針對編號(hào)為N的提案的Accept請求,只要該Acceptor沒有對編號(hào)大于N的Prepare請求做出過響應(yīng),它就接受該提案

另外再提一下,在一個(gè)Paxos過程只批準(zhǔn)一個(gè)value,只有被prepare的value且被多數(shù)Acceptor接受才能被批準(zhǔn),被批準(zhǔn)的value才能被learner。

看故事的時(shí)候不知道大家有沒有疑問,我是有的

決策者Acceptor為什么要多個(gè)?

若只有一個(gè)acceptor多個(gè)proposer,acceptor可以選任意一個(gè)提案,很美好,但是有單點(diǎn)問題。

為什么要用“半數(shù)以上通過”這個(gè)辦法來決策?

一個(gè)集合不可能同時(shí)存在兩個(gè)半數(shù)以上的子集,過半的思想保證提交的value在同一時(shí)刻在分布式系統(tǒng)中是唯一的一致的。

這種提交方式不管proposer接受到的消息是接受了誰的提議過半,只保證是有提議過半了的。然后再在第二階段確定這個(gè)過半了的提議,讓所有節(jié)點(diǎn)知道這件事。因此算法如果能保證value被半數(shù)acceptor接受,則意味這此時(shí)被認(rèn)定的value是唯一的。

為什么acceptor要接受多個(gè)提案?

如果acceptor只能夠接受一個(gè)提案,則可能發(fā)生所有proposer提出的提案都無法達(dá)到多數(shù),決策者接收一個(gè)就結(jié)束了,狀態(tài)無法一致。

當(dāng)Proposer有很多個(gè)的時(shí)候,會(huì)有什么問題?

很難有一個(gè)proposer收到半數(shù)以上的回復(fù),進(jìn)而不斷地執(zhí)行第一階段的協(xié)議,決策收斂速度慢,很久都不能做出一個(gè)決策。

提案為什么要帶上編號(hào)(即故事中用來賄賂的錢)?

帶上編號(hào)是為了決策者可以在自身接受到的提案的對比中做出最終的唯一決策。

試想如果按照提案到達(dá)時(shí)間對比提案,且不說這樣就變成了只接收一個(gè)第一到達(dá)的提案,還可能因?yàn)榫W(wǎng)絡(luò)原因每個(gè)決策者接受到的提案的先后順序不一樣,涼涼。

接著上面的問題,那如果把所有決策者收到的提案匯集起來選出個(gè)時(shí)間最早的呢?

把提案匯集,這時(shí)候肯定需要一個(gè)master來做判斷,大家有沒發(fā)現(xiàn)這個(gè)master好像就變成了propser,它拿到最早的提案,交給決策者...

其實(shí),這就演變成了paxos的變種協(xié)議。

到此,相信大家對“zookeeper paxos是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI