一致性协议

        在分布式系统中,当一个事务操作需要跨越多个分布式节点的时候,为了保持事务ACID的特征,就需要引入一个称为“协调者”(Coordinator)的组件来统一调度所有分布式节点的执行逻辑,这些被调度的节点则称为“参与者”(Participant)。协调者负责参与者的行为,并最终决定这些参与者是否要把事务真正提交。在长期的研究探索过程中,涌现了一大批经典的一致性协议和算法,其中最著名的就是二阶段、三阶段协议和paxos算法。

一、2PC

    2PC是Two-Phase-Commit的缩写,即两个阶段提交。

    阶段一:提交事务请求

    阶段二:执行事务提交

        1、执行事务提交

        2、中断事务

    过程示意图如下:


    优缺点:

            优点:原理简单,实现方便

            缺点:同步阻塞、单点问题、脑裂、太过保守。

二、3PC

    3PC是Three-Phase Coomit的缩写,即三阶段提交,是2PC的改进版本,其将二阶段提交协议的“提交事务请求”过程一分为二,形成了由CanCommit、PreCcommit和doCommit三个阶段组成事务处理协议。

    阶段一:canCommit事务询问。

    阶段二:PreCommit预提交

            1、执行事务预提交

            2、中断事务

    阶段三:doCommit正式提交

            1、执行提交

            2、中断事务

    过程示意图如下:


优缺点:

    优点:降低参与者的阻塞范围,能够在出现单点故障后继续达成一致性。

    缺点:参与者收到preCommit消息后,如果出现网络分区,此时协调者所在的节点和参与者无法进行正常的网络通信,这种情况下,该参与者以然后进行事务提交,这会导致数据的不一致性。


            

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值