二段式提交和三段式提交


CAP定理

2000年7月加州大學伯克利分校 Eric Brewer教授提出CAP猜想,兩年后被證明。

CAP理論告訴我們,一個分布式系統不可能同時滿足一致性(C,Consistency),可用性(A,Availability)和分區容錯性(P,Partition tolerance)三個基本要求,最多只能同時滿足其中兩個。

一致性:分布式系統中,能夠做到針對一個數據的更新成功后,其他所有的用戶都可以讀取到[最新的值],那么這樣子的系統就是強一致性的。

可用性:[有限時間內][返回結果]

分區容錯性:分布式系統在遇到任何網絡分區故障的時候,仍然需要能夠抱枕固堤外提供滿足一致性和可用性的服務。

其實CAP定理是理論,現實系統場景中的CAP也不一定會真的會放棄其中一個不做,而是我們可以着重性的保證其他兩個,而剩下的一個盡量保證。

 

在一些面試中,面試官是比較喜歡提問到如果保證分布式事務的。比較出名的解決辦法就是二段式提交協議、三段式提交協議和Paxos算法了。

二段式提交協議]是將事務的提交過程分成了兩個階段來進行處理,其執行過程如下:

階段一:提交事務請求:

    1、事務詢問。協調者向所有參與者發送事務內容,詢問是否可以進行事務提交操作,然后就開始等待參與者的響應。

    2、執行事務。各參與者節點執行事務奧做,並將Undo和Redo信息記入事務日志中。

    3、各參與者向協調者反饋事務詢問的響應。

階段二:執行事務提交:

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

    1、發送提交請求。

    2、事務提交。

    3、反饋事務提交結果。參與者在完成事務提交之后,會向協調者發送Ack消息。

    4、完成事務。

    中斷事務:

    1、發送回滾請求。協調者向參與者發出rollback請求。

    2、事務回滾。參與者接收到Roolback請求利用階段一種記錄的Undo信息來執行事務回滾動作。

    3、反饋事務回滾結果。

    4、中斷事務。

 

二段式提交協議的優缺點:

優點:原理簡單,實現方便;

缺點:同步阻塞、單點問題、腦裂(比如協調者的消息在網絡異常情況下只給一部分參與者發送了)、太過保守。

 

[三段式提交協議]其實是在二段式基礎上面針對二段式的缺點進行了改進。

階段一:CanCommit

    1、事務詢問。

    2、各參與者向協調這反饋事務詢問的響應。

階段二:PreCommit

    假設協調者從所有的參與者獲得的都是Yes響應,那么將執行事務預提交。

        1、發送預提交請求。協調者向所有參與者節點發出preCommit請求,進入prepared階段。

        2、事務預提交。參與者接收到preCommt請求,執行事務擦偶走,將Undo和Redo信息記錄到事務日志中。

        3、各參與者向協調者反饋事務提交的響應。

    假設任何一個參與者向協調者反饋了No反應,活着在等待超時之后,協調者無法獲得所有參與者的響應,那么將執行事務的中斷。

        1、發送終端請求。協調者向所有參與者發出abort請求。

        2、中斷事務。無論接到abort請求還是等待協調者請求過程出現超時情況,參與者都會中斷事務。

階段三:doCommit

該階段將進行真正的事務提交:

    執行提交

        1、發送提交請求。進入這一階段,假設協調者從正常的工作狀態,並且接收到所有的參與者的ack響應,它將從預提交狀態轉換到提交狀態,向所有參與者發送doCommit請求。

        2、事務提交。參與者接收到doCommit請求后,正式執行事務提交操作。並在提交后釋放在整個事務執行期間占用的事務資源。

        3、反饋事務提交結果。參與者完成事務提交之后,向協調者發送Ack消息。

        4、完成事務。協調者接收到所有參與者的Ack消息,完成事務。

    中斷事務

        中斷事務的4步操作與提交事務完全一致,只不過從提交事務變成了事務回滾。

三段式提交協議的優缺點:

最大優點就是降低了參與者的阻塞范圍,並且能夠在出現單點故障后繼續達成一致。

缺點就是在去除阻塞的情況下引入了新的問題,那就是參與者接收到了PreCommit消息,然后網絡出現問題,參與者和協調者無法通信,這種情況下,參與者依然會執行事務的提交。

 

----

該文內容出自倪超的《從Paxos到zookeeper》

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM