DDBS Paxos

Paxos 有點(diǎn)類似我們之前說(shuō)的 2PC葵姥,3PC紊浩,但是解決了他們倆的各種硬傷。該算法在很多大廠都得到了工程實(shí)踐酌呆,比如阿里的 OceanBase 的分布式數(shù)據(jù)庫(kù)衡载,底層就是使用的 paxos 算法。再比如 Google 的 chubby 分布式鎖也是用的這個(gè)算法隙袁√涤椋可見該算法在分布式系統(tǒng)中的地位,甚至于菩收,paxos 就是分布式一致性的代名詞梨睁。

Paxos 角色

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

  • Proposer :信使
  • Acceptor:決策者
  • Client:產(chǎn)生議題者
  • Learner:最終決策學(xué)習(xí)者

不過(guò)為了方便理解娜饵,我們將Proposer摘取出來(lái)作為算法的主角坡贺,其他三者為配角。

Paxos 舉例說(shuō)明

在 Paxos 島上,有A1, A2, A3, A4, A5 5位議員拴念,就稅率問(wèn)題進(jìn)行決議,決議結(jié)果由少數(shù)服從多數(shù)來(lái)決定褐缠。
我們假設(shè)幾個(gè)場(chǎng)景來(lái)解釋:

場(chǎng)景 1.

(暫且不考慮信使政鼠,即不考慮分布式網(wǎng)絡(luò)問(wèn)題)
A1 說(shuō):稅率應(yīng)該是 10%。而此時(shí)只有他一個(gè)人提這個(gè)建議队魏。如下圖:


很完美公般,沒(méi)有任何人和他競(jìng)爭(zhēng)提案,他的這個(gè)提案毫無(wú)阻撓的通過(guò)了胡桨。A2 - A5 都會(huì)回應(yīng)他:我們收到了你的提案官帘,等待最終的批準(zhǔn)。而 A1 在收到 2 份回復(fù)后(加上A1自己昧谊,表決結(jié)果過(guò)半)刽虹,就可以發(fā)布最終的決議:稅率定位 10%,不用再討論了呢诬。

場(chǎng)景 2.

現(xiàn)在我們假設(shè)在 A1 提出 10% 稅率提案的同時(shí), A5 決定將稅率定為 20%涌哲,如果這個(gè)提案要通過(guò)侍從送到其他議員的案頭,A1 的草案將由 4 位侍從送到 A2-A5 那里尚镰。但是侍從不靠譜(代表分布式環(huán)境不靠譜)阀圾,負(fù)責(zé) A2 和 A3 的侍從順利送達(dá),而負(fù)責(zé) A4 和 A5 的侍從則開溜了狗唉!而 A5 的草案則送到了 A4 和 A3 的手中初烘。



現(xiàn)在,A1 分俯,A2肾筐,A3 收到了 A1 的提案,A3澳迫,A4局齿, A5 收到 A5 的提案,按照 Paxos 的協(xié)議橄登,A1抓歼,A2,A4拢锹,A5 4個(gè)侍從將接受他們的提案谣妻,侍從拿著回復(fù):我已收到你的提案,等待最終批準(zhǔn) 回到提案者那里卒稳。

而 A3 的行為將決定批準(zhǔn)哪一個(gè)蹋半。當(dāng) A3 同時(shí)收到了 A1 和 A5 的請(qǐng)求,該如何抉擇呢充坑?不同的抉擇將會(huì)導(dǎo)致不同的結(jié)果减江。

場(chǎng)景 2. 抉擇1.

假設(shè) A1 的提案先送到 A3 那里染突,并且 A3 接受了該提案并回復(fù)了侍從。這樣辈灼,A1 加上 A2 加上 A3份企,構(gòu)成了多數(shù)派,成功確定了稅率為 10%巡莹。 而 A5 的侍從由于路上喝酒喝多了司志,晚到了一天,等他到了降宅,稅率已經(jīng)確定了(決策已經(jīng)成型)骂远,A3 回復(fù) A5:兄弟,你來(lái)的太晚了腰根,稅率已經(jīng)定好了激才,不用折騰了,聽 A1 的吧唠雕。

場(chǎng)景 2. 抉擇2.

依然假設(shè) A1 的提案先送到 A3 處贸营,但是這次 A5 的侍從不是放假了,只是中途耽擱了一會(huì)岩睁。這次, A3 依然會(huì)將"接受"回復(fù)給 A1 .但是在決議成型之前它又收到了 A5 的提案钞脂。這時(shí)協(xié)議根據(jù) A5 的身份地位有兩種處理方式。

  1. 當(dāng) A5 地位很高捕儒,例如 CEO冰啃,就回復(fù) A5:我已收到您的提案,等待最終批準(zhǔn)刘莹,但是您之前有人提出將稅率定為10%,請(qǐng)明察阎毅。
  2. 當(dāng) A5 沒(méi)地位,普通碼農(nóng)一個(gè)点弯,直接不回復(fù)扇调。等待 A1 廣播:稅率定為 10% 啦!抢肛!

場(chǎng)景 2. 抉擇3.

在這個(gè)情況中狼钮,我們將看見,根據(jù)提案的時(shí)間提案者的權(quán)勢(shì)決定是否應(yīng)答是有意義的捡絮。在這里熬芜,時(shí)間和提案者的權(quán)勢(shì)就構(gòu)成了給提案編號(hào)的依據(jù)。這樣的編號(hào)符合"任何兩個(gè)提案之間構(gòu)成偏序"的要求福稳。

A1 和 A5 同樣提出上述提案涎拉,這時(shí) A1 可以正常聯(lián)系 A2 和 A3,A5 也可以正常聯(lián)系這兩個(gè)人。這次 A2 先收到 A1 的提案; A3 則先收到 A5 的提案鼓拧。而 A5 更有地位半火。
在這種情況下,已經(jīng)回答 A1 的 A2 發(fā)現(xiàn)有比 A1 更有權(quán)勢(shì)的 A5 提出了稅率 20% 的新提案季俩,于是回復(fù)A5說(shuō):我已收到您的提案慈缔,等待最終批準(zhǔn)。
而回復(fù) A5 的 A3 發(fā)現(xiàn)新的提案者A1是個(gè)小人物种玛,沒(méi)地位不予應(yīng)答。
此時(shí)瓤檐,A5 得到了 A2赂韵,A3 的回復(fù),于是 A5 說(shuō):稅率定為 20%挠蛉,別再討論了祭示。
那 A4 呢? A4 由于睡過(guò)頭了(決議已經(jīng)成型)谴古,迷迷糊糊的說(shuō):現(xiàn)有的稅率是什么? 如果沒(méi)有決定质涛,則建議將其定為 15%.
這個(gè)時(shí)候,其他的議員就告訴他:哥們掰担,已經(jīng)定為 20% 了汇陆,別折騰了。洗洗繼續(xù)睡吧带饱。
整個(gè)過(guò)程如下圖:


總結(jié)

我們可以看到Paxos算法就是少數(shù)服從多數(shù)毡代,同時(shí),還會(huì)根據(jù)議員的身份和提案的時(shí)間來(lái)判斷是否需要應(yīng)答勺疼,這個(gè)身份其實(shí)就是一個(gè)編號(hào)教寂,是為了防止出現(xiàn)活性導(dǎo)致死循環(huán)。
Paxos 的目標(biāo):保證最終有一個(gè)提案會(huì)被選定执庐,當(dāng)提案被選定后酪耕,其他議員最終也能獲取到被選定的提案。
Paxos 協(xié)議用來(lái)解決的問(wèn)題可以用一句話來(lái)簡(jiǎn)化: 將所有節(jié)點(diǎn)都寫入同一個(gè)值轨淌,且被寫入后不再更改迂烁。

注意:這一切都是在沒(méi)有 拜占庭將軍 問(wèn)題的基礎(chǔ)上建立的,即消息不會(huì)被篡改(因?yàn)榉植际酱蠖嘣诰钟蚓W(wǎng)中)猿诸。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末婚被,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子梳虽,更是在濱河造成了極大的恐慌址芯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谷炸,居然都是意外死亡北专,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門旬陡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拓颓,“玉大人,你說(shuō)我怎么就攤上這事描孟∈荒溃” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵匿醒,是天一觀的道長(zhǎng)场航。 經(jīng)常有香客問(wèn)我,道長(zhǎng)廉羔,這世上最難降的妖魔是什么溉痢? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮憋他,結(jié)果婚禮上孩饼,老公的妹妹穿的比我還像新娘。我一直安慰自己竹挡,他們只是感情好镀娶,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著揪罕,像睡著了一般贞绵。 火紅的嫁衣襯著肌膚如雪荠卷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天,我揣著相機(jī)與錄音蒋情,去河邊找鬼适滓。 笑死仆邓,一個(gè)胖子當(dāng)著我的面吹牛暑始,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播搅窿,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼嘁酿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了男应?” 一聲冷哼從身側(cè)響起闹司,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沐飘,沒(méi)想到半個(gè)月后游桩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體牲迫,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年借卧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盹憎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铐刘,死狀恐怖陪每,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情镰吵,我是刑警寧澤檩禾,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站疤祭,受9級(jí)特大地震影響锌订,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜画株,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啦辐。 院中可真熱鬧谓传,春花似錦、人聲如沸芹关。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)侥衬。三九已至诗祸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間轴总,已是汗流浹背直颅。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怀樟,地道東北人功偿。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像往堡,于是被迫代替她去往敵國(guó)和親械荷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360