一致性协议

一致性协议和算法

  • 二阶段提交协议
  • 三阶段提交协议
  • Paxos协议

(2PC)二阶段提交协议

  • 协调者
    • (统一调度所有分布式节点执行逻辑)
  • 参与者
    • (被调度的分布式节点)
  • 绝大部分关系型数据库都是采用二阶段提交协议
  • 协议说明:
    • 阶段一:提交事务请求(“投票阶段”)
      • 事务询问
        • 协调者向各参与者发送事务内容,询问是否执行事务提交,等待各个参与者响应
      • 执行事务
        • 各个参与者执行事务操作,并将undo、redo 计入事务日志
      • 各个参与者向协调者反馈事务询问的响应
        • 成功执行返回YES
        • 失败返回NO
    • 阶段二包含两种可能:
      • 可能1:执行事务提交(所有参与者都返回YES)
        1. 发送提交请求(协调者向各个参与者发出commit 请求)
        2. 事务提交(参与者 commit 后释放资源)
        3. 反馈事务提交结果(向协调者发送事务提交Ack消息)
        4. 完成事务(收到所有Ack,完成事务)
      • d5029eabb6939863af278eab8acec7bdc29.jpg
      • 可能2:中断事务(任何一个参与者返回NO或超时未返回结果)
        1. 发送回滚请求
        2. 回滚提交
        3. 反馈回滚
        4. 完成回滚
      • 128bf4c0cfa6c8bb48e60b183a3cb9409dd.jpg
  • 强一致算法
  • 优缺点:
    • 优点:
      • 原理简单,实现方便
    • 缺点:
      • 同步阻塞
        • 极大限制分布式系统性能
        • 所有参与该事务操作逻辑都处于阻塞状态
      • 单点问题
        • 一旦协调者出现问题,二阶段无法运转
      • 脑裂(数据不一致)
        • 二阶段协调者发送commit 网络异常,只有部分参与者commit成功,导致数据不一致
      • 过于保守
        • 二阶段提交协议没有完善的容错机制,任何节点失败都会导致整个事务失败

(3PC)三阶段提交协议

  • 二阶段提交协议的改进
  • 将2pc的“提交事务请求”一分为二,变成:
  • Cancommit、PreCommit、doCommit
  • 702a3a2d33bf5ede270af2467d571f827a4.jpg
  • 进入阶段三可能出现两种故障:
    • 协调者出现问题
    • 协调者与参与者网络出现问题
  • 无论哪种情况,参与者都会在最终超时的时候,doCommit 或 回滚

优点:

  • 降低参与者阻塞范围,并能在出现单点故障后继续达成一致

缺点:

  • 在preCommit 后,如果出现“网络分区(部分网络故障)”,未故障节点依然会commit,导致不一致

Paxos 算法

  • 基于消息传递、具有高度容错特点的一致性算法
  • 是目前公认的最有效的分布式一致性算法之一
  • 在机器宕机或网络异常情况下,快速且正确的将某个数据达成一致
  • 既解决了数据不一致问题,也解决了无限等待问题
  • paxos是一个分布式选举算法即可

有三种角色:

  • Proposer
  • Acceptor
  • Learners
  • 一个进程可能同时充当多种角色。比如一个进程可能既是Proposer又是Acceptor又是Learner。
  • Proposer负责提出提案,Acceptor负责对提案作出裁决(accept与否),learner负责学习提案结果。

bb77bf2daabe2402a5fae9d0a5056fe4025.jpg

  •  

93d64cfe06eb28e5a4548989b6ec8b0c856.jpg

  •  

14974d0541b4ec291d0ab83eaa26e044506.jpg

Paxos算法的活锁问题(保证算法活性)

20ecd170bb0cc1859977042a2fd18313c85.jpg

转载于:https://my.oschina.net/u/3847203/blog/2870442

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值