二階段提交2PC的簡(jiǎn)要總結(jié)

2PC,Two-Phase Commit,是一種保證分布式架構(gòu)下的所有節(jié)點(diǎn)處理事務(wù)的原子性和一致性的算法。通常被認(rèn)為是一種一致性協(xié)議。利用該協(xié)議能夠很方便的協(xié)調(diào)分布式事務(wù)的參與節(jié)點(diǎn),以及統(tǒng)一決定事務(wù)的提交和回滾。

對(duì)于分布式的每個(gè)節(jié)點(diǎn)來說,它能夠明確的知道自己執(zhí)行事務(wù)的成敗,但卻無法直接獲得其他節(jié)點(diǎn)的執(zhí)行結(jié)果。因此,作為調(diào)度節(jié)點(diǎn)的行為和作出事務(wù)提交決定的“協(xié)調(diào)者(Coordinator)”被引入,與之相對(duì)的參與事務(wù)的節(jié)點(diǎn)被稱為“參與者(Participant)”。

二階段提交,顧名思義,將事務(wù)的提交過程分為兩個(gè)階段:

階段一. 提交事務(wù)請(qǐng)求(投票階段):

1. 事務(wù)詢問。協(xié)調(diào)者向所有的參與者發(fā)送事務(wù)內(nèi)容,然后等待各參與者的響應(yīng)。

2. 執(zhí)行事務(wù)。參與者執(zhí)行事務(wù),并記錄Undo和Redo到日志中。這期間參與者會(huì)申請(qǐng)并占用與事務(wù)相關(guān)的資源。

3. 參與者響應(yīng)。執(zhí)行事務(wù)成功的參與者向協(xié)調(diào)者返回yes,否則返回no。

階段二. 執(zhí)行事務(wù)提交(執(zhí)行階段):

協(xié)調(diào)者根據(jù)參與者的反饋情況決定是否進(jìn)行事務(wù)提交。

如果所有的參與者都返回yes, 則進(jìn)行執(zhí)行事務(wù)提交的操作過程:

1. 發(fā)送提交請(qǐng)求。協(xié)調(diào)者向所有的參與者發(fā)送提交事務(wù)的請(qǐng)求。

2. 事務(wù)提交。參與者正式提交事務(wù),完成后釋放資源。

3. 反饋提交結(jié)果。參與者向協(xié)調(diào)者發(fā)送ack。

4. 完成事務(wù)。協(xié)調(diào)者收到所有的ack后,事務(wù)完成。

如果有的參與者在第一階段返回了no,則進(jìn)行中斷事務(wù)的操作過程:

1. 發(fā)送回滾請(qǐng)求。協(xié)調(diào)者向所有的參與者發(fā)送事務(wù)回滾請(qǐng)求。

2. 事務(wù)回滾。參與者收到回滾請(qǐng)求后,利用Undo信息回滾,結(jié)束后釋放資源。

3. 反饋回滾結(jié)果。參與者向協(xié)調(diào)者發(fā)送ack。

4. 中斷事務(wù)。協(xié)調(diào)者收到所有的ack后,事務(wù)中斷。

二階段提交中,每個(gè)事務(wù)都是先嘗試后提交,保證強(qiáng)一致性。

二階段提交的優(yōu)點(diǎn)是原理簡(jiǎn)單,實(shí)現(xiàn)方便,缺點(diǎn)有以下幾個(gè):

1. 同步阻塞:這是最明顯也是最大的問題。在兩個(gè)階段,所有參與事務(wù)的邏輯都處于阻塞狀態(tài)。(同步:有時(shí)序關(guān)系,一件事情的完成依賴于另一件事情先完成;阻塞:等待響應(yīng)后才能繼續(xù)向下執(zhí)行)

2. 單點(diǎn):協(xié)調(diào)者為單點(diǎn),一旦出問題,整個(gè)流程無法運(yùn)轉(zhuǎn)。如果協(xié)調(diào)者在階段二發(fā)生了問題,所有的參與者會(huì)一直鎖定事務(wù)資源,無法完成事務(wù)操作。

3. 數(shù)據(jù)不一致(腦裂):若階段二中某些參與者沒收到commit請(qǐng)求,則只有收到的參與者會(huì)提交事務(wù)。

4. 太過保守:若協(xié)調(diào)者始終無法得到所有參與者的響應(yīng)信息,則只能依據(jù)超時(shí)機(jī)制判斷是否需要中斷事務(wù),沒有較完善的容錯(cuò)機(jī)制。

最后編輯于
?著作權(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)容

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