3PC

3PC , 是Three-Phase Commit的縮寫(xiě),即三階段提交,是2PC的改進(jìn)版,將二階段提交協(xié)議的“提交事務(wù)請(qǐng)求” 一份為二變成了CanCommit,PreCommit,do Commit三個(gè)階段組成的事務(wù)處理協(xié)議。

  • 階段一:CanCommit

1、事務(wù)詢問(wèn):協(xié)調(diào)者向所有的參與者發(fā)送包含了事務(wù)內(nèi)容的canCommit請(qǐng)求,詢問(wèn)是否可以進(jìn)行事務(wù)提交操作,并開(kāi)始等待各參與者的響應(yīng)。

2、各參與者向協(xié)調(diào)者反饋事務(wù)詢問(wèn)的響應(yīng):如果參與者認(rèn)為自己可以順利執(zhí)行事務(wù)則返回Yes,否則返回No響應(yīng)。

  • 階段二:PreCommit

情況1 執(zhí)行事務(wù)預(yù)提交:當(dāng)在第一個(gè)階段里所有參與者的反饋都是Yes,則會(huì)進(jìn)行事務(wù)預(yù)提交。
1、發(fā)送預(yù)提交請(qǐng)求:協(xié)調(diào)者向所有參與者節(jié)點(diǎn)發(fā)送preCommit請(qǐng)求,然后進(jìn)入Prepared階段。
2、事務(wù)預(yù)提交:參與者接受到了preCommit請(qǐng)求后,會(huì)執(zhí)行事務(wù)操作,并將Undo和Redo信息記錄在事務(wù)日志當(dāng)中。
3、反饋事務(wù)執(zhí)行的響應(yīng):參與者成功執(zhí)行了事務(wù)操作,就會(huì)反饋給協(xié)調(diào)者Ack響應(yīng),同時(shí)等待最終的指令:提交或者中止。

情況2 中斷事務(wù):在第一階段收到了No的反饋,或者在超時(shí)之后無(wú)法收到所有的反饋,則進(jìn)行中斷事務(wù)操作。向所有的參與者發(fā)出abort請(qǐng)求。

  • 階段三:doCommit

情況1 執(zhí)行提交:

1、發(fā)送提交請(qǐng)求:在假設(shè)協(xié)調(diào)者處于正常工作狀態(tài),并且收到了來(lái)自所有參與者的Ack響應(yīng),那么就會(huì)向所有的參與者發(fā)出doCommit請(qǐng)求。
2、事務(wù)提交:參與者接收到了doCommit請(qǐng)求之后,會(huì)正式的執(zhí)行事務(wù)提交操作,并在完成提交之后釋放在整個(gè)事務(wù)執(zhí)行期間所占用的事務(wù)資源。
3、反饋事務(wù)提交結(jié)果:參與者在完成了事務(wù)之后,會(huì)想?yún)f(xié)調(diào)者發(fā)送Ack響應(yīng)信息。
4、完成事務(wù):協(xié)調(diào)者接收到所有參與者反饋的Ack消息之后完成事務(wù)。

情況2 中斷事務(wù):在第二階段收到了No的反饋,或者在超時(shí)之后無(wú)法收到所有的反饋,則進(jìn)行中斷事務(wù)操作。向所有的參與者發(fā)出abort請(qǐng)求。參與者會(huì)利用在階段二中記錄的Undo信息進(jìn)行回滾,并且在完成回滾之后釋放在整個(gè)事務(wù)執(zhí)行期間占用的資源。

三階段協(xié)議的優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):降低了參與者的阻塞范圍,并且能夠在出現(xiàn)單點(diǎn)故障后繼續(xù)達(dá)成一致。

  • 缺點(diǎn):在參與者收到了PreCommit的請(qǐng)求后由于網(wǎng)絡(luò)分區(qū),此時(shí)協(xié)調(diào)者所在的節(jié)點(diǎn)和參與者無(wú)法進(jìn)行正常的網(wǎng)絡(luò)通信,在這種情況下,參與者依舊會(huì)進(jìn)行事務(wù)的提交,會(huì)出現(xiàn)數(shù)據(jù)不一致的問(wèn)題。

小疑問(wèn):協(xié)調(diào)者所在的節(jié)點(diǎn)和參與者無(wú)法進(jìn)行正常的網(wǎng)絡(luò)通信不算超時(shí)后沒(méi)有獲取到所有節(jié)點(diǎn)的反饋嗎?此時(shí)不應(yīng)該去中斷事務(wù)嘛。

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一致性協(xié)議 在分布式系統(tǒng)中,每一個(gè)機(jī)器節(jié)點(diǎn)都能明確知道自己在進(jìn)行事務(wù)操作中的結(jié)果是成功還是失敗,但是無(wú)法直接獲取到...
    codingBen閱讀 2,550評(píng)論 0 4
  • 1.2pc 2pc(Two Phase Commitment Protocol)當(dāng)一個(gè)事務(wù)操作需要跨越多個(gè)分布式節(jié)...
    Mrsunup閱讀 1,308評(píng)論 0 0
  • 分布式一致性回顧 在分布式系統(tǒng)中,為了保證數(shù)據(jù)的高可用,通常,我們會(huì)將數(shù)據(jù)保留多個(gè)副本(replica),這些副本...
    jiangmo閱讀 2,299評(píng)論 7 5
  • 不要過(guò)于依賴能人,表面做的很好,實(shí)際很糟糕。 解決創(chuàng)造性的問(wèn)題,。
    wh王輝閱讀 210評(píng)論 0 0
  • 《先知》里收錄了《大河》這篇散文詩(shī),說(shuō)的是卡迪沙河谷的兩條小溪交匯在大河奔流的地方,二者開(kāi)始了對(duì)話。從對(duì)話中,我們...
    YC_Chen閱讀 278評(píng)論 0 1

友情鏈接更多精彩內(nèi)容