從PAXOS到ZOOKEEPER分散式一致性原理與實踐--3PC(Three-Phase Commit)

衣舞晨風發表於2017-06-11

     2PC在其實際執行過程中可能存在諸如同步阻塞、協調者的單點問題、腦裂和太過保守的容錯機制等缺點,因此研究者在二階段提交協議的基礎上進行了改進,提出了三階段提交協議。

     3PC,是Three-Phase Commit的縮寫,即三階段提交協議,是2PC的改進版本,其將二階段提交協議的”提交事物請求”過程一分為二,並形成了由CanCommit、PreCommit和do Commit三個階段組成的事物處理協議,其協議設計圖如下:
這裡寫圖片描述

1、階段一:CanCommit

(1)事物詢問

     協調者向所有的參與者傳送一個包含事物內容的canCommit請求,詢問是否可以執行事務提交操作,並開始等待各參與者的響應

(2)各參與者向協調者反饋事務詢問的響應

     參與者在接收到來自協調者的canCommit請求後,正常情況下,如果其自身認為可以順利執行事務,那麼會反饋Yes響應,並進入預備狀態,否則反饋No響應

2、階段二:PreCommit

     在階段二中,協調者會根據各參與者的反饋情況來決定是否可以進行事務的PreCommit操作,正常情況下,包含兩種可能:

(1)執行事務預提交

     假如協調者從所有的參與者獲得的反饋都是Yes響應,那麼就會執行事務預提交。

(a)傳送預提交請求

     協調者向參與者節點發出preCommit的請求,進入Prepared階段

(b)事務預提交

     參與者接收到preCommit請求後,會執行事務操作,並將Undo和Redo資訊記錄到事務日誌中

(c)各參與者向協調者反饋事務執行的響應  

     如果參與者成功執行了事務操作,哪兒就會反饋給協調者Ack響應,同時等待最終的指令:提交(commit)或中止(abort)

(2)中斷事物

     假如任何一個參與者向協調者反饋了No響應,或者在等待超時後,協調者尚無法接收到所有參與者的反饋響應,那麼就會中斷事物。

(a)傳送中斷請求

     協調者向所有參與者節點發出abort請求

(b)中斷事物

     無論是收到來自協調者的abort請求,或者是在等待協調者請求過程中出現超時,參與者都會中斷事物

3、階段三:doCommit

     該階段將進行真正的事物提交,會存在以下兩種可能的情況:

(1)執行提交

(a)傳送提交請求

     進入這一階段,假設協調者處於正常工作狀態,並且它接收到了來自所有參與者的Ack響應,那麼它將從”預提交”狀態轉換到”提交”狀態,並向所有的參與者傳送doCommit請求。

(b)事物提交

     參與者接收到doCommit請求後,會正式執行事務提交操作,並在完成提交之後釋放在整個事物執行期間佔用的事物資源

(c)反饋事物提交結果

     參與者在完成事物提交之後,向協調者傳送Ack訊息

(d)完成事物

     協調者接收到所有參與者反饋的Ack訊息後,完成事物

(2)中斷事物

     進入這一階段,假設協調者處於正常工作狀態,並且有任意一個參與者向協調者反饋了No響應,或者在等待超時之後,協調者商無法接收到所有參與者的反饋響應,那麼就會中斷事物

(a)傳送中斷請求

     協調者向所有的參與者節點傳送abort請求

(b)事物回滾

     參與者接收到abort請求後,會利用其在階段二中記錄的Undo資訊來執行事務回滾操作,並在完成事物回滾之後釋放在整個事物執行期間所佔用的資源

(c)反饋事務反饋結果

     參與者在完成事物回滾之後,向協調者傳送Ack訊息

(d)中斷事物

     協調者接收到所有參與者反饋的Ack訊息後,中斷事物

需要注意的是,一旦進入階段三,可能會出現以下兩種故障:

  • 協調者出現問題

  • 協調者和參與者之間的網路故障
         無論出現哪種情況,最終都會導致參與者無法及時接收到來自協調者的doCommit或者是abort請求,針對這樣的異常情況,參與則都會在等待超時之後,繼續進行事務提交

3PC的優缺點

1、三階段提交的優點

     相較於二階段提交協議,三階段提交協議最大的優點就是降低了參與者的阻塞範圍,並且能夠在出現單點故障後繼續達成一致

2、三階段提交的缺點

     三階段提交協議在去除阻塞的同時也引入了新的問題,那就是在參與者接收到preCommit訊息後,如果出現網路分割槽,此時協調者所在的節點和參與者無法進行正常的網路通訊,在這種情況下,參與者依然會進行事物的提交,這必然出現資料的不一致。

從PAXOS到ZOOKEEPER分散式一致性原理與實踐pdf下載:
http://download.csdn.net/detail/xunzaosiyecao/9867618

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章