分佈式一致性協議——2PC和3PC

一、2PC

定義

2PC即二階段提交,是計算機網絡尤其是分佈式領域內,爲了保持分佈式系統架構下所有節點在進行事務處理過程中能夠保持原子性和一致性而設計的一種算法。目前絕大多數關係型數據庫都是採用二階段提交協議來完成分佈式事務處理。

協議說明

階段一:提交事務請求
1.事務詢問
2.執行事務(階段一完成)
3.向協調者反饋

階段二:執行事務提交或中斷事務
正常流程
1.發送提交請求
2.事務提交
3.反饋事務提交結果
4.完成事務
在這裏插入圖片描述
異常流程
在這裏插入圖片描述

優缺點

優點:原理簡單,實現方便
缺點:同步阻塞、單點問題、腦裂、太過保守

同步阻塞
二階段提交執行過程中,所有參與該事務操作的邏輯都處於阻塞狀態。各參與者在等待其他參與者響應過程中,將無法進行其他任何操作

單點問題
協調者爲單節點,協調者出現問題,整個流程無法完成,階段二出現問題,參與者會一直處於鎖定事務資源的狀態中

數據不一致
網絡原因或者協調者發送commit請求是崩潰,導致只有部分參與者收到commit請求,導致沒收到commit請求的參與者無法進行事務提交,分佈式系統出現數據不一致情況。

太過保守
沒有完善的容錯機制,任意一個節點失敗都會調至整個事務失敗

二、3PC

將二階段提交協議階段一“提交事務請求”過程,一分爲二,形成了Cancommit、PreCommit和do Commit三個階段組成的事務處理請求。

階段一:Cancommit

1.事務詢問
詢問是否可以執行事務
2.各參與者向協調者反饋事務詢問響應
如果可以順利執行事務,反饋yes,否則no

階段二:PreCommit

和二階段提交大體一樣,中斷事務加入了異常處理,如果沒有收到協調者中斷請求或者在等待協調者過程超時,參與者都會中斷事務

階段三:do Commit

和二階段提交大體一樣,參與者加入了超時機制

優缺點

優點:CanCommit階段和超時機制降低了參與者的阻塞範圍,並且能夠在出現單點故障後繼續達成一致
缺點:出現網絡分區問題,協調者所在節點和參與者無法進行正常的網絡通信,這種情況下參與者會進行事務提交,會導致數據不一致

流程圖

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章