1. 程式人生 > >2PC、3PC、Paxos協議

2PC、3PC、Paxos協議

2pc

    角色

        參與者:負責投票

        協調者:負責發起詢問和接受答覆

    階段

        1.詢問階段

            是否能執行事務提交操作。如果參與者能夠執行事務的提交,先執行事務操作,然後返回YES,如果沒有成功執行事務操作,就返回NO

        2.提交階段

            執行commit或者rollback。

    缺陷

       第二階段協調者和參與者都掛了,掛了的這個參與者在掛之前已經執行了操作,但是由於他掛了,沒有人知道他執行了什麼操作,會導致資料不一致情況

        還有很多其他缺點:阻塞、腦裂(網路分割槽)問題等,3PC的出現就是為了解決這些問題。

3pc

   角色

        參與者、協調者

    階段

        1.詢問階段(CanCommit)

            詢問所有參與者是否可可以執行事務操作,並不在本階段執行事務操作。

        2.預準備階段(PreCommit)

            當協調者在第一階段收到所有的參與者都返回YES時,第二階段執行事務操作。

        3.提交階段(DoCommit)

            第三階段執行commit或者rollback。

    缺陷

        在doCommit階段,如果參與者無法及時接收到來自協調者的doCommit或者rebort請求時,會在等待超時之後,會繼續進行事務的提交。這樣會導致資料不一致。

    與2PC的差異

        1.將2PC的一階段拆分為了兩個階段

        2.引入超時機制。

Paxos