二階段提交刀疙、三階段提交舶赔、paxos協(xié)議

1、二階段提交協(xié)議:

二階段協(xié)議分為兩步庙洼,分別是投票階段顿痪、提交階段。

  • 投票階段:事務(wù)提議的協(xié)調(diào)者向所有參與者發(fā)出事務(wù)請(qǐng)求油够,參與者記錄事務(wù)日志蚁袭,并返回ok;或者事務(wù)不可執(zhí)行石咬,返回fail揩悄。
  • 提交階段:協(xié)調(diào)者收到參與者的ack后,發(fā)出提交請(qǐng)求鬼悠,參與者收到后執(zhí)行事務(wù)删性,并返回ack。若收到參與者返回的fail消息或者等待參與者確認(rèn)消息超時(shí)焕窝,協(xié)調(diào)者發(fā)出rollback消息蹬挺,所有參與者執(zhí)行事務(wù)回滾。
  • 存在問題:若在回滾過程中或提交過程中協(xié)調(diào)者宕機(jī)它掂,那么只有部分參與者收到回滾消息或提交消息巴帮,這將導(dǎo)致系統(tǒng)消息不一致。整個(gè)過程中協(xié)調(diào)者虐秋、參與者都在阻塞等待榕茧,性能較低。協(xié)調(diào)者存在單點(diǎn)問題客给。

2用押、三階段提交協(xié)議

三階段提交協(xié)議相比二階段提交協(xié)議多了一個(gè)詢問步驟,并且參與者在完成寫事務(wù)日志發(fā)出確認(rèn)消息后靶剑,若沒有收到提交消息將自動(dòng)執(zhí)行提交蜻拨。

  • 詢問階段:協(xié)調(diào)者向所有參與者發(fā)出事務(wù)詢問請(qǐng)求,參與者返回確認(rèn)消息ok桩引。
  • preCommit階段:協(xié)調(diào)者向參與者發(fā)送事務(wù)官觅,參與者寫事務(wù)日志,返回ack阐污。
  • commit階段:協(xié)調(diào)者收到確認(rèn)消息后休涤,向所有參與者發(fā)送commit消息,所有參與者執(zhí)行事務(wù),返回ack功氨。
  • 相比二階段提交改進(jìn):減少了事務(wù)的等待過程序苏。解決了協(xié)調(diào)者單點(diǎn)問題。
  • 存在問題:與二階段提交相似捷凄,若在preCommit階段出現(xiàn)網(wǎng)絡(luò)問題忱详,那么沒有收到提交請(qǐng)求的參與者將自動(dòng)提交事務(wù),此時(shí)協(xié)調(diào)者可能正在回滾事務(wù)跺涤,將導(dǎo)致事務(wù)一致性問題匈睁。

3、paxos協(xié)議

paxos提出提出了“過半數(shù)”有效的概念桶错,即超過半數(shù)節(jié)點(diǎn)存在就能正常提供服務(wù)航唆。

  • 針對(duì)二階段、三階段提交協(xié)議的一致性問題:
    paxos為每個(gè)提議增加了遞增的編號(hào)m院刁,編號(hào)越大說明提議越新糯钙,系統(tǒng)應(yīng)該以最新的提議編號(hào)為最終一致性值。
    提議的流程分為prepare和accept兩階段:
    1退腥、協(xié)調(diào)者生成增長(zhǎng)的編號(hào)m任岸,向所有參與者發(fā)送prepare(m)。
    2狡刘、參與者若接收過提議享潜,則返回已接收的所有提議編號(hào)最大值m‘和提議內(nèi)容v‘;若沒有接收過提議則返回空表示接收提議嗅蔬。
    3米碰、協(xié)調(diào)者若收到參與則通過數(shù)據(jù)超過一半則進(jìn)入accept階段,否則從返回結(jié)果中選出最大值m’并更新提議內(nèi)容v’购城,使用更新后的提議(m‘,v’)返回步驟1虐译。
    4瘪板、協(xié)調(diào)者進(jìn)入accept階段后,發(fā)送accept(m漆诽,v)侮攀。
    5、參與者需要判斷提議編號(hào)m厢拭,若m大等于自己記錄的值則通過提議兰英,返回ok;否者不接受提議供鸠,返回對(duì)應(yīng)編號(hào)和內(nèi)容(m‘畦贸,v’)。
    6、提議者根據(jù)步驟5結(jié)果判斷通過數(shù)量是否超過一半薄坏,超過則表示提議通過趋厉;否從返回值中選出最大m‘并更新v‘,返回步驟1胶坠。

這個(gè)算法流程怎么實(shí)現(xiàn)一致性的君账?
綜合上述流程,通過參與者的不斷比對(duì)反饋沈善,最終只有一個(gè)提議會(huì)被超過半數(shù)的參與者通過乡数,可以確定在進(jìn)行中的提議都會(huì)最終達(dá)成一致,并更新到所有參與者中去闻牡。
另外净赴,當(dāng)出現(xiàn)更大編號(hào)提議時(shí),協(xié)調(diào)者需要更新提議重復(fù)發(fā)出提議澈侠,如果更大編號(hào)被不斷提出劫侧,那么可能使得協(xié)議一直不能達(dá)成一致,這就導(dǎo)致活鎖問題哨啃。

參考:

  1. 《從paxos到zookeeper》
  2. https://www.zhihu.com/question/19787937
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末烧栋,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拳球,更是在濱河造成了極大的恐慌审姓,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祝峻,死亡現(xiàn)場(chǎng)離奇詭異魔吐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莱找,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門酬姆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奥溺,你說我怎么就攤上這事辞色。” “怎么了浮定?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵相满,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我桦卒,道長(zhǎng)立美,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任方灾,我火速辦了婚禮建蹄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己躲撰,他們只是感情好针贬,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著拢蛋,像睡著了一般桦他。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谆棱,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天快压,我揣著相機(jī)與錄音,去河邊找鬼垃瞧。 笑死蔫劣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的个从。 我是一名探鬼主播脉幢,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼嗦锐!你這毒婦竟也來了嫌松?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤奕污,失蹤者是張志新(化名)和其女友劉穎萎羔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碳默,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贾陷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘱根。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片髓废。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖该抒,靈堂內(nèi)的尸體忽然破棺而出慌洪,到底是詐尸還是另有隱情,我是刑警寧澤柔逼,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站割岛,受9級(jí)特大地震影響愉适,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜癣漆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一维咸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦癌蓖、人聲如沸瞬哼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坐慰。三九已至,卻和暖如春用僧,著一層夾襖步出監(jiān)牢的瞬間结胀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工责循, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糟港,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓院仿,卻偏偏與公主長(zhǎng)得像秸抚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子歹垫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容