溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

3.一致性協(xié)議 2PC協(xié)議(ZooKeeper手記)

發(fā)布時間:2020-07-11 09:02:03 來源:網(wǎng)絡(luò) 閱讀:702 作者:陸永劍講師 欄目:軟件技術(shù)

2PC和3PC來歷

在分布式系統(tǒng)中,每一個機器節(jié)點都能明確知道,自己在進(jìn)行的事務(wù)操作是否成功(可以理解為單機操作),但是卻無法直接獲取到其他分布式節(jié)點的操作結(jié)果。因此,當(dāng)一個事務(wù)操作需要跨越多個分布式節(jié)點的時候,為了保持事務(wù)處理的ACID特性,就需要引入一個稱為“協(xié)調(diào)者”的組件來統(tǒng)一調(diào)度所有分布式節(jié)點的執(zhí)行邏輯,我們把他稱作“參與者”?;谶@個思想,衍生了2PC和3PC的兩種協(xié)議。

1. 2PC(Two-Phase Commit)二階段提交

  • 階段一:提交事務(wù)請求

    • 事務(wù)詢問。
      協(xié)調(diào)者向所有的參與者發(fā)送事務(wù)內(nèi)容,詢問是否可以執(zhí)行事務(wù)提交操作,并開始等待各參與者的響應(yīng)。
    • 執(zhí)行事務(wù)
      各參與者執(zhí)行事務(wù)操作,并將undo和redo信息記入事務(wù)日志中。
    • 各參與者向協(xié)調(diào)者反饋事務(wù)詢問的響應(yīng)
      如果參與者成功執(zhí)行了事務(wù)操作,那么反饋給協(xié)調(diào)者Yes響應(yīng),反之反饋No響應(yīng)。
  • 階段二:執(zhí)行事務(wù)提交 (階段一反饋的結(jié)果都是Yes)

    • 發(fā)送提交請求
      協(xié)調(diào)者向所有參與者節(jié)點發(fā)出Commit請求。
    • 事務(wù)提交
      參與者接收到Commit請求后,會正式執(zhí)行事務(wù)提交操作。
    • 反饋事務(wù)提交結(jié)果
      參與者在完成事務(wù)提交之后,向協(xié)調(diào)者發(fā)送ACK消息。
    • 完成事務(wù)
      協(xié)調(diào)者接受到所有參與者反饋的ACK消息后,完成事務(wù)。
  • 階段二:中斷事務(wù) (階段一反饋的結(jié)果有No或者有超時情況)

    • 發(fā)送回滾請求
      協(xié)調(diào)者向所有參與者節(jié)點發(fā)出RollBack請求。
    • 事務(wù)回滾
      參與者接收到RollBack請求后,利用階段一中undo信息來執(zhí)行事務(wù)回滾操作。
    • 反饋事務(wù)回滾結(jié)果
      參與者在完成事務(wù)回滾之后,向協(xié)調(diào)者發(fā)送ACK消息。
    • 中斷事務(wù)
      協(xié)調(diào)者接受到所有參與者反饋的ACK消息后,完成事務(wù)中斷。
  • 優(yōu)點
    原理簡單,實現(xiàn)方便。
  • 缺點
    • 同步阻塞
    • 單點問題
    • 數(shù)據(jù)不一致
    • 太過保守
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI