一致性协议,2pc,3pc,parxos,zab,raft

一致性协议,raft,2pc,3pc,paxos,zab

CAP

待续:raft和paxos,zab协议

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

一、2PC

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

    阶段一:提交事务请求

    阶段二:执行事务提交

        1、执行事务提交

        2、中断事务

    过程示意图如下:

    优缺点:

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

            缺点:同步阻塞、单点问题、数据不一致。

关于这几个缺点,在实际应用中,都是对2PC 做了相应的改造:

  1. 同步阻塞:2PC 有几个过程(比如 Coordinator 等待所有参与者表决的过程中)都是同步阻塞的,在实际的应用中,这可能会导致长阻塞问题,这个问题是通过超时判断机制来解决的,但并不能完全解决同步阻塞问题;
  2. Coordinator 单点问题:实际生产应用中,Coordinator 都会有相应的备选节点;
  3. 数据不一致:这个在前面已经讲述过了,如果在第二阶段,Coordinator 和参与者都出现挂掉的情况下,是有可能导致数据不一致的。

二、3PC

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

    阶段一:canCommit事务询问。

    阶段二:PreCommit预提交

            1、执行事务预提交

            2、中断事务

    阶段三:doCommit正式提交

            1、执行提交

            2、中断事务

    过程示意图如下:

 

优缺点:

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

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


其实3pc是为了解决2pc中的数据一致性问题,3PC 依然带来其他问题:比如,网络分区问题,在 preCommit 消息发送后突然两个机房断开,这时候 Coordinator 所在机房会 abort, 另外剩余参与者的机房则会 commit。

而且由于3PC 的设计过于复杂,在解决2PC 问题的同时也引入了新的问题,所以在实际上应用不是很广泛。

三 .paxos协议

四.zab协议

参考博客:https://www.jianshu.com/p/2bceacd60b8a

五.raft协议

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值