2PC、3PC、Paxos協議

2pc

    角色

        參與者:負責投票網絡

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

    階段

        1.詢問階段事務

            是否能執行事務提交操做。若是參與者可以執行事務的提交,先執行事務操做,而後返回YES,若是沒有成功執行事務操做,就返回NOit

        2.提交階段請求

            執行commit或者rollback。數據

    缺陷

       第二階段協調者和參與者都掛了,掛了的這個參與者在掛以前已經執行了操做,可是因爲他掛了,沒有人知道他執行了什麼操做,會致使數據不一致狀況co

        還有不少其餘缺點:阻塞、腦裂(網絡分區)問題等,3PC的出現就是爲了解決這些問題。阻塞

3pc

   角色

        參與者、協調者超時

    階段

        1.詢問階段(CanCommit)commit

            詢問全部參與者是否可能夠執行事務操做,並不在本階段執行事務操做。

        2.預準備階段(PreCommit)

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

        3.提交階段(DoCommit)

            第三階段執行commit或者rollback。

    缺陷

        在doCommit階段,若是參與者沒法及時接收到來自協調者的doCommit或者rebort請求時,會在等待超時以後,會繼續進行事務的提交。這樣會致使數據不一致。

    與2PC的差別

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

        2.引入超時機制。

Paxos

相關文章
相關標籤/搜索