我們以歷史資料為例簡(jiǎn)單介紹下paxos算法:戰(zhàn)國中期,秦國商鞅變法后迅速崛起對(duì)外擴(kuò)張石蔗,在函谷關(guān)外拉開大軍,準(zhǔn)備全面入侵山東國家畅形,山東諸國惶惶不可終日养距,此時(shí)公孫衍犀首游說列國,并先后出任魏國韓國趙國等多個(gè)國相束亏,提議欲抵抗秦國必須結(jié)成同盟铃在,合縱方可破秦阵具。最終有三個(gè)國家魏國碍遍,楚國,韓國集兵于函谷關(guān)外阳液,各占一個(gè)山頭準(zhǔn)備攻打秦國。但是任意一個(gè)國家和秦國對(duì)抗必?cái)。仨氃谌齻€(gè)國家中至少有兩個(gè)國家達(dá)成一致虽填,同時(shí)進(jìn)攻。每個(gè)國家有主帥(魏王,楚王兔港,韓王)和參謀(魏相犀首,春申君黃歇橡伞,韓太子)兑徘,參謀給出的進(jìn)攻時(shí)間必須得到魏楚韓中任意兩個(gè)國家的同意藕漱,才可決議,但是派出信使有可能被秦國密探捕獲橄仍,而導(dǎo)致信息丟失。所以達(dá)成一致的進(jìn)攻時(shí)間是個(gè)難題宪哩,就有了下面的paxos算法決議茁瘦,雖然根據(jù)此算法圆恤,三國進(jìn)攻時(shí)間最終達(dá)成了一致哑了,但是還是被秦張儀以連橫之策大敗盟軍于函谷之外,這都是后話拆火,不在我們算法涉及范圍之內(nèi)们镜。
兩個(gè)原則:
1:參謀提出提議颈抚,分兩階段锚赤,第一準(zhǔn)備階段赐稽,第二提交提議階段浑侥。
2:決策者始終保存最大編號(hào)的信息姊舵,編號(hào)較小的會(huì)拒絕
- 參謀犀首派出信使給魏楚韓(序號(hào)為1),魏王楚王收到信息锭吨,由于信使被捕蠢莺,韓王未收到信息寒匙。
- 魏王楚王收到信息后零如,派信使告訴參謀犀首已經(jīng)收到信息,等待具體指示锄弱。
- 同時(shí)參謀黃歇也派出信使送信給魏楚韓(序號(hào)為2)考蕾,魏王未收到,楚懷王会宪,韓王收到信息.
- 楚王韓王收到信息后派信使告訴參謀黃歇肖卧,信息已收到,等待具體指示掸鹅。
- 參謀犀首收到信息后塞帐,派信使告訴魏楚王,具體進(jìn)攻時(shí)間為下月1號(hào)巍沙。
- 魏王收到后葵姥,覺得可以涌庭,派信使告訴參謀犀首滞项,1號(hào)進(jìn)攻方案認(rèn)可湾蔓。
- 楚王收到后,因?yàn)樗4娴淖钚碌却甘镜男盘?hào)是2顶捷,所以告訴犀首,1號(hào)進(jìn)攻方案不認(rèn)可口芍,正在等待最新指示為2的信息杖剪。
- 參謀黃歇派出信使告訴楚王韓王,進(jìn)攻時(shí)間為下月2號(hào)拨齐。
- 楚王收到后和自己保存的信號(hào)對(duì)比鳞陨,發(fā)現(xiàn)一致,則告訴參謀黃歇瞻惋,2號(hào)方案認(rèn)可炊邦。同時(shí)韓王也表示認(rèn)可。
- 參謀犀首得到的方案不是一半以上(魏王認(rèn)可熟史,楚王不認(rèn)可馁害,韓王未知),所以重新發(fā)起一次投票蹂匹。
- 因?yàn)榈?步碘菜,已經(jīng)被告知,最新指示的代號(hào)已經(jīng)是2了限寞,1已經(jīng)是過去時(shí)了忍啸。所以派出信使,說最新指示代號(hào)升級(jí)為3了履植。
- 魏王收到信息后计雌,告訴參謀犀首,我上次已經(jīng)同意了你的進(jìn)攻時(shí)間玫霎,是否更改凿滤,等待最新指示。
- 楚王收到信息后庶近,告訴參謀犀首翁脆,最新指示代號(hào)3已收到,我目前同意的進(jìn)攻時(shí)間是2號(hào)鼻种,等待你的最新指示反番。
- 參謀犀首收到回信后,下發(fā)具體作戰(zhàn)時(shí)間叉钥。因?yàn)?1步已經(jīng)被告知罢缸,最新時(shí)間已經(jīng)更改為2號(hào)了。所以犀首這次派出信使攜帶信息為“最新代號(hào)3投队,作戰(zhàn)時(shí)間2號(hào)”枫疆。
- 魏王收到后,按最新指示執(zhí)行蛾洛,和自己保存的指示代號(hào)對(duì)比养铸,發(fā)現(xiàn)一致雁芙,回復(fù)犀首,同意
- 楚王收到后钞螟,和自己保存的代號(hào)做對(duì)比兔甘,發(fā)現(xiàn)也一致,回復(fù)犀首鳞滨,同意2號(hào)進(jìn)攻
這樣一次決策就達(dá)成一致了洞焙,半數(shù)以上同意2號(hào)進(jìn)攻。