DDBS 2PC

為了使系統(tǒng)盡量能夠達(dá)到 CAP蔑穴,于是有了 BASE 協(xié)議,而 BASE 協(xié)議是在可用性和一致性之間做的取舍和妥協(xié)惧浴。

人們往往需要在系統(tǒng)的可用性和數(shù)據(jù)一致性之間反復(fù)的權(quán)衡存和。于是呢,就產(chǎn)生我們標(biāo)題中的一致性協(xié)議衷旅。為了解決分布式問(wèn)題捐腿,涌現(xiàn)了很多經(jīng)典的算法和協(xié)議,最著名的就是二階段提交協(xié)議柿顶,三階段提交協(xié)議茄袖,Paxos 算法

2PC(二階段提交)

2PC 嘁锯,不是 2 個(gè) pc 機(jī)的意思宪祥,而是 Two-Phase Commit 〖页耍可以認(rèn)為是一種算法蝗羊,也可以認(rèn)為是一種協(xié)議,主要目的就是為了保證分布式系統(tǒng)數(shù)據(jù)的一致性仁锯。顧名思義耀找,二階段提交就是講事務(wù)的提交過(guò)程分成了兩個(gè)階段來(lái)進(jìn)行處理。

在分布式系統(tǒng)中业崖,會(huì)有多個(gè)機(jī)器節(jié)點(diǎn)涯呻,因此需要一個(gè) “協(xié)調(diào)者” 凉驻,而各個(gè)節(jié)點(diǎn)就是 “參與者”,協(xié)調(diào)者統(tǒng)一調(diào)度所有分布式節(jié)點(diǎn)的執(zhí)行邏輯复罐,這些被調(diào)度的分布式節(jié)點(diǎn)就是 “參與者”涝登。

協(xié)調(diào)者最終決定這些參與者是否要把事務(wù)真正進(jìn)行提交。正是基于這個(gè)思想效诅,有了二階段提交和 三階段提交胀滚。

階段一

  1. 事務(wù)詢問(wèn)
    協(xié)調(diào)者向所有的參與者詢問(wèn),是否準(zhǔn)備好了執(zhí)行事務(wù)乱投,并開(kāi)始等待各參與者的響應(yīng)咽笼。
  2. 執(zhí)行事務(wù)
    各參與者節(jié)點(diǎn)執(zhí)行事務(wù)操作,并將 Undo 和 Redo 信息記入事務(wù)日志中戚炫。
  3. 各參與者向協(xié)調(diào)者反饋事務(wù)詢問(wèn)的響應(yīng)
    如果參與者成功執(zhí)行了事務(wù)操作剑刑,那么就反饋給協(xié)調(diào)者 Yes 響應(yīng),表示事務(wù)可以執(zhí)行双肤;如果參與者沒(méi)有成功執(zhí)行事務(wù)施掏,就返回 No 給協(xié)調(diào)者,表示事務(wù)不可以執(zhí)行茅糜。

階段二

在階段二中七芭,會(huì)根據(jù)階段一的結(jié)果執(zhí)行 2 種操作:執(zhí)行事務(wù)提交或者中斷事務(wù)

執(zhí)行事務(wù)提交步驟如下:

  1. 發(fā)送提交請(qǐng)求:協(xié)調(diào)者向所有參與者發(fā)出 commit 請(qǐng)求蔑赘。
  2. 事務(wù)提交:參與者收到 commit 請(qǐng)求后狸驳,會(huì)正式執(zhí)行事務(wù)提交操作,并在完成提交之后釋放整個(gè)事務(wù)執(zhí)行期間占用的事務(wù)資源缩赛。
  3. 反饋事務(wù)提交結(jié)果:參與者在完成事務(wù)提交之后耙箍,向協(xié)調(diào)者發(fā)送 Ack 信息。
  4. 協(xié)調(diào)者接收到所有參與者反饋的 Ack 信息后酥馍,完成事務(wù)究西。

中斷事務(wù)步驟如下:

  1. 發(fā)送回滾請(qǐng)求:協(xié)調(diào)者向所有參與者發(fā)出 Rollback 請(qǐng)求。
  2. 事務(wù)回滾:參與者接收到 Rollback 請(qǐng)求后物喷,會(huì)利用其在階段一種記錄的 Undo 信息來(lái)執(zhí)行事務(wù)回滾操作卤材,并在完成回滾之后釋放在整個(gè)事務(wù)執(zhí)行期間占用的資源。
  3. 反饋事務(wù)回滾結(jié)果:參與者在完成事務(wù)回滾之后峦失,想?yún)f(xié)調(diào)者發(fā)送 Ack 信息扇丛。
  4. 中斷事務(wù):協(xié)調(diào)者接收到所有參與者反饋的 Ack 信息后,完成事務(wù)中斷尉辑。

2PC不足之處

缺點(diǎn):同步阻塞帆精,單點(diǎn)問(wèn)題,數(shù)據(jù)不一致,過(guò)于保守

  • 同步阻塞:
    在二階段提交的過(guò)程中卓练,所有的節(jié)點(diǎn)都在等待其他節(jié)點(diǎn)的響應(yīng)隘蝎,無(wú)法進(jìn)行其他操作。這種同步阻塞極大的限制了分布式系統(tǒng)的性能襟企。

  • 單點(diǎn)問(wèn)題:
    協(xié)調(diào)者在整個(gè)二階段提交過(guò)程中很重要嘱么,如果協(xié)調(diào)者在提交階段出現(xiàn)問(wèn)題,那么整個(gè)流程將無(wú)法運(yùn)轉(zhuǎn)顽悼,更重要的是:其他參與者將會(huì)處于一直鎖定事務(wù)資源的狀態(tài)中曼振,而無(wú)法繼續(xù)完成事務(wù)操作。

  • 數(shù)據(jù)不一致:
    假設(shè)當(dāng)協(xié)調(diào)者向所有的參與者發(fā)送 commit 請(qǐng)求之后蔚龙,發(fā)生了局部網(wǎng)絡(luò)異潮溃或者是協(xié)調(diào)者在尚未發(fā)送完所有 commit 請(qǐng)求之前自身發(fā)生了崩潰,導(dǎo)致最終只有部分參與者收到了 commit 請(qǐng)求木羹。這將導(dǎo)致嚴(yán)重的數(shù)據(jù)不一致問(wèn)題甲雅。

  • 過(guò)于保守:
    如果在二階段提交的提交詢問(wèn)階段中,參與者出現(xiàn)故障而導(dǎo)致協(xié)調(diào)者始終無(wú)法獲取到所有參與者的響應(yīng)信息的話坑填,這時(shí)協(xié)調(diào)者只能依靠其自身的超時(shí)機(jī)制來(lái)判斷是否需要中斷事務(wù)抛人,顯然,這種策略過(guò)于保守穷遂。換句話說(shuō),二階段提交協(xié)議沒(méi)有設(shè)計(jì)較為完善的容錯(cuò)機(jī)制娱据,任意一個(gè)節(jié)點(diǎn)是失敗都會(huì)導(dǎo)致整個(gè)事務(wù)的失敗蚪黑。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市中剩,隨后出現(xiàn)的幾起案子忌穿,更是在濱河造成了極大的恐慌,老刑警劉巖结啼,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掠剑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡郊愧,警方通過(guò)查閱死者的電腦和手機(jī)朴译,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)属铁,“玉大人眠寿,你說(shuō)我怎么就攤上這事〗鼓ⅲ” “怎么了盯拱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我狡逢,道長(zhǎng)宁舰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任奢浑,我火速辦了婚禮蛮艰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘殷费。我一直安慰自己印荔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布详羡。 她就那樣靜靜地躺著仍律,像睡著了一般。 火紅的嫁衣襯著肌膚如雪实柠。 梳的紋絲不亂的頭發(fā)上水泉,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天,我揣著相機(jī)與錄音窒盐,去河邊找鬼草则。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蟹漓,可吹牛的內(nèi)容都是我干的炕横。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼葡粒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼份殿!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起嗽交,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤卿嘲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后夫壁,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體拾枣,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年盒让,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了梅肤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邑茄,死狀恐怖凭语,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情撩扒,我是刑警寧澤似扔,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布吨些,位于F島的核電站,受9級(jí)特大地震影響炒辉,放射性物質(zhì)發(fā)生泄漏豪墅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一黔寇、第九天 我趴在偏房一處隱蔽的房頂上張望偶器。 院中可真熱鬧,春花似錦缝裤、人聲如沸屏轰。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)霎苗。三九已至,卻和暖如春榛做,著一層夾襖步出監(jiān)牢的瞬間唁盏,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工检眯, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留厘擂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓锰瘸,卻偏偏與公主長(zhǎng)得像刽严,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子避凝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355