1. 程式人生 > >從Paxos到Zookeeper分散式一致性原理與實踐-------------2.一致性協議

從Paxos到Zookeeper分散式一致性原理與實踐-------------2.一致性協議

1.2PC

2PC就是二段提交協議,簡單來說就是把過程分為兩個階段來處理:

1.提交事務請求

      我們假如有A(協調者),B(參與者),C(參與者)三臺伺服器。首先A(協調者)向所有的參與者B和C傳送一個提交事務的請求。然後所有的參與者B和C向A(協調者)傳送一個反饋的響應。只有當所有的參與者傳送的是成功的響應,協調著才能往下執行事務,並對執行的資訊進行儲存。只要有一個參與者不是反饋的成功的響應,即當前事務不允許執行。整個過程相當於一個投票,參與者有一票否決權。

2.執行事務提交

     如果參與者反饋給協調者都是成功的響應,即協調者就會進行事務的提交,然後協調者會向所有的參與者在發一個提交的請求,

所有的參與者在收到提交的請求後,會執行事務的提交操作,然後釋放佔有的資源。協調者在收到所有參與者事務執行成功的反饋後,則事務完成。

    異常情況:由於網路原因或者參與者中有出現異常的情況。參與者反饋給協調者中有失敗的響應。協調者在收到失敗的響應後,會向所有的參與者傳送一個事務回滾的請求。參與者接收到協調者傳送的回滾的請求後,會根據一階段儲存的日誌執行事務的回滾,然後釋放所佔資源。然後向協調者傳送一個回滾成功的響應。當協調者接收到所有的參與者回滾成功的響應後,會完成事務中斷。

 

2PC的優缺點:

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

缺點:同步阻塞,單點問題,腦裂,太過保守(強一致)


2.3PC

是2階段的的改進版,將二階段提交協議的提交過程一份為二,執行事務的預提交,然後在不出現錯誤的時間進行事務的真正提交。

優點:降低了參與者的阻塞範圍,並且能夠在出現單點故障後繼續達成一致。

缺點:如果網路出現分割槽,此時協調者所在的節點與 參與者無法進行正常通訊,而參與者依然會正常提交,導致了資料的不一致。