敘述你所知道的分布式一致性協(xié)議

2pc,3pc,paxos,zab
在分布式應(yīng)用中,每個(gè)節(jié)點(diǎn)都知道自己的事務(wù)提交的結(jié)果是成功或者失敗,但是無(wú)法直接獲取其他分布式節(jié)點(diǎn)的結(jié)果。因此需要一個(gè)協(xié)調(diào)者,其他節(jié)點(diǎn)成為參與者。
一. 2pc
提交事務(wù)請(qǐng)求,執(zhí)行事務(wù)提交。同步阻塞、單點(diǎn)故障、不一致。主要用于數(shù)據(jù)庫(kù)領(lǐng)域內(nèi),解決了分布式事務(wù)的原子性問題
1.提交事務(wù)請(qǐng)求
首先向其他節(jié)點(diǎn)詢問是否可以執(zhí)行事務(wù)提交操作,并發(fā)送事務(wù)給各個(gè)節(jié)點(diǎn)。然后各個(gè)節(jié)點(diǎn)執(zhí)行事務(wù),并將操作寫入本地事務(wù)日志。各個(gè)參與者向協(xié)調(diào)者發(fā)送反饋。
2.執(zhí)行事務(wù)提交
1)若協(xié)調(diào)者受到所有參與者的ACK反饋
向所有的參與者發(fā)送commit消息。參與者收到commit消息后執(zhí)行事務(wù)提交操作,并向協(xié)調(diào)者發(fā)送ACK反饋,然后釋放事務(wù)資源。協(xié)調(diào)者收到反饋后完成事務(wù)。
2)若協(xié)調(diào)者收到某一個(gè)參與者的NO反饋,或者協(xié)調(diào)者等待超時(shí)之后
向所有參與者節(jié)點(diǎn)發(fā)送回滾請(qǐng)求,參與者收到后執(zhí)行回滾請(qǐng)求,執(zhí)行完成后向協(xié)調(diào)者發(fā)送ACK反饋,協(xié)調(diào)者接收到所有參與者的ACK反饋后完成事務(wù)終端。
二. 3pc
cancommit, precommit, docommit;單點(diǎn)故障,數(shù)據(jù)不一致,解決了同步阻塞問題(超時(shí)提交策略,第三階段參與者等待超時(shí)后會(huì)提交事務(wù))。preCommit解決了同步阻塞的問題。
1)cancommit
協(xié)調(diào)者向所有參與者發(fā)送包含事務(wù)內(nèi)容在內(nèi)的cancommit請(qǐng)求,并等待參與者的反饋。參與者收到cancommit請(qǐng)求后,若判斷自己可以順利執(zhí)行事務(wù),則向協(xié)調(diào)者發(fā)送ACK響應(yīng),否則反饋NO響應(yīng)。
2)precommit
若協(xié)調(diào)者收到所有參與者的ACK響應(yīng),則向所有的參與者發(fā)送precommit請(qǐng)求。參與者收到后執(zhí)行事務(wù),并將操作寫入本地事務(wù)日志,成功后向協(xié)調(diào)者發(fā)送ACK響應(yīng)。若協(xié)調(diào)者在第一階段的反饋中有no,或者協(xié)調(diào)者等待超時(shí),則向所有的參與者發(fā)送中斷請(qǐng)求。
3)docommit
如果協(xié)調(diào)者收到了第二階段的所有參與者的ACK請(qǐng)求,則向參與者發(fā)送docommit請(qǐng)求,執(zhí)行事務(wù)的提交。參與者收到docommit請(qǐng)求后,執(zhí)行事務(wù)的提交,成功后釋放事務(wù)資源。參與者事務(wù)提交后向docommit發(fā)送ACK反饋,協(xié)調(diào)者收到所有參與者反饋后,完成事務(wù)的提交。
若協(xié)調(diào)者等待超時(shí),或者第二階段有參與者發(fā)送no反饋,則向所有參與者發(fā)送中斷請(qǐng)求,參與者收到后執(zhí)行事務(wù)回滾,回滾結(jié)束后釋放事務(wù)資源,并向協(xié)調(diào)者發(fā)送ACK響應(yīng),協(xié)調(diào)者收到所有的ACK響應(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 在上一篇中,我們介紹了為什么使用分布式,為什么會(huì)出現(xiàn)分布式數(shù)據(jù)一致性問題,以及相關(guān)分布式理論:CAP/BASE理論...
    先生zeng閱讀 1,930評(píng)論 0 2
  • 一致性協(xié)議 在分布式系統(tǒng)中,每一個(gè)機(jī)器節(jié)點(diǎn)都能明確知道自己在進(jìn)行事務(wù)操作中的結(jié)果是成功還是失敗,但是無(wú)法直接獲取到...
    codingBen閱讀 2,545評(píng)論 0 4
  • 為了解決分布式系統(tǒng)的一致性問題,在長(zhǎng)期的探索研究過程中,涌現(xiàn)出了一大批經(jīng)典的一致性協(xié)議和算法,其中最著名的就是二階...
    codersm閱讀 389評(píng)論 0 0
  • 為了解決分布式一致性問題,涌現(xiàn)出了一大批經(jīng)典的分布式一致性算法,其中最著名的就是2PC、3PC和Paxos。本文將...
    匠丶閱讀 898評(píng)論 0 7
  • 堅(jiān)持目標(biāo)【讀書】分享第780天2019.3.19 1、心理學(xué)不應(yīng)該只研究人類的弱點(diǎn)和問題,而應(yīng)該同時(shí)關(guān)注人類的美德...
    堅(jiān)定目標(biāo)閱讀 268評(píng)論 0 0

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