zookeeper學習特別篇二:zookeeper一致性協議---2pc二階段提交、三階段提交

四:一致性協議

數據在跨越多個分佈式節點時,爲了保障食物的ACID事務,需要一個協調者來協調分佈式各個節點的調度,基於這個思想衍生了一致性協議

4.1:2PC階段提交

顧名思義,二階段提交,將事務的提交分爲兩個階段

  • 階段一 提交事務請求
1、協調者向所有的參與者節點發送事務內容,詢問是否可以執行事務操作,並等待其他參與者節點的反饋
2、各參與者節點執行事務操作
3、各參與者節點反饋給協調者,事務是否可以執行
  • 階段二 事務提交
根據一階段各個參與者節點反饋的ack,如果所有參與者節點反饋ack,則執行事務提交,否則中斷事務
事務提交:
1、協調者向各個參與者節點發送commit請求
2、參與者節點接受到commit請求後,執行事務的提交操作
3、各參與者節點完成事務提交後,向協調者返送提交commit成功確認消息
4、協調者接受各個參與者節點的ack後,完成事務commit
  • 中斷事務
1、發送回滾請求
2、各個參與者節點回滾事務
3、反饋給協調者事務回滾結果
4、協調者接受各參與者節點ack後回滾事務
  • 二階段提交存在的問題
同步阻塞
二階段提交過程中,所有參與事務操作的節點處於同步阻塞狀態,無法進行其他的操作
單點問題
一旦協調者出現單點故障,無法保證事務的一致性操作
腦裂導致數據不一致
如果分佈式節點出現網絡分區,某些參與者未收到commit提交命令。則出現部分參與者完成數據提
交。未收到commit的命令的參與者則無法進行事務提交,整個分佈式系統便出現了數據不一致性現
象。
 
4.2:3PC 三階段提交
3PC2PC的改進版,實質是將2PC中提交事務請求拆分爲兩步,形成了CanCommitPreCommit
doCommit三個階段的事務一致性協議
  • 階段一 : CanCommit
1、事務詢問
2、各參與者節點向協調者反饋事務詢問的響應
  • 階段二 : PreCommit
根據階段一的反饋結果分爲兩種情況
1、執行事務預提交
1)發送預提交請求
協調者向所有參與者節點發送preCommit請求,進入prepared階段
2)事務預提交
各參與者節點接受到preCommit請求後,執行事務操作
3)各參與者節點向協調者反饋事務執行
2、中斷事務
任意一個參與者節點反饋給協調者響應No時,或者在等待超時後,協調者還未收到參與者的反
饋,就中斷事務,中斷事務分爲兩步:
1)協調者向各個參與者節點發送abort請求
2)參與者收到abort請求,或者等待超時時間後,中斷事務
  • 階段三 : doCommit
1、執行提交
1)發送提交請求
協調者向所有參與者節點發送doCommit請求
2)事務提交
各參與者節點接受到doCommit請求後,執行事務提交操作
3)反饋事務提交結果北京市昌平區建材城西路金燕龍辦公樓一層 電話:400-618-9090
各參與者節點完成事務提交以後,向協調者發送ack
4)事務完成
協調者接受各個參與者反饋的ack後,完成事務
2、中斷事務
1)參與者接受到abort請求後,執行事務回滾
2)參與者完成事務回滾以後,向協調者發送ack
3)協調者接受回滾ack後,回滾事務
3PC相較於2PC而言,解決了協調者掛點後參與者無限阻塞和單點問題,但是仍然無法解決網絡分
區問題
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章