2PC、3PC、Paxos协议

2pc

    角色

        参与者:负责投票

        协调者:负责发起询问和接受答复

    阶段

        1.询问阶段

            是否能执行事务提交操作。如果参与者能够执行事务的提交,先执行事务操作,然后返回YES,如果没有成功执行事务操作,就返回NO

        2.提交阶段

            执行commit或者rollback。

    缺陷

       第二阶段协调者和参与者都挂了,挂了的这个参与者在挂之前已经执行了操作,但是由于他挂了,没有人知道他执行了什么操作,会导致数据不一致情况

        还有很多其他缺点:阻塞、脑裂(网络分区)问题等,3PC的出现就是为了解决这些问题。

3pc

   角色

        参与者、协调者

    阶段

        1.询问阶段(CanCommit)

            询问所有参与者是否可可以执行事务操作,并不在本阶段执行事务操作。

扫描二维码关注公众号,回复: 4224920 查看本文章

        2.预准备阶段(PreCommit)

            当协调者在第一阶段收到所有的参与者都返回YES时,第二阶段执行事务操作。

        3.提交阶段(DoCommit)

            第三阶段执行commit或者rollback。

    缺陷

        在doCommit阶段,如果参与者无法及时接收到来自协调者的doCommit或者rebort请求时,会在等待超时之后,会继续进行事务的提交。这样会导致数据不一致。

    与2PC的差异

        1.将2PC的一阶段拆分为了两个阶段

        2.引入超时机制。

Paxos

猜你喜欢

转载自my.oschina.net/u/2312080/blog/2870247