分布式系统--- Paxos算法详解(一遍看懂)

Paxos算法

首先来了解一个故事用来导入这个算法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Lamport本人也因为Paxos算法获得了计算机最高奖项—图灵奖
在这个算法中,需要有几个非常重要的角色:
在这里插入图片描述
在这里插入图片描述
这个算法被叫做Basic-Paxos算法,可以看到算法本身还是比较复杂的,一共有两轮申请返回,下面举几个例子来推演一下算法,例子就是开头的故事。
在这里插入图片描述
这个例子中,刚开始几个将军并没有收到任何申请,所以直接返回OK,进行accept阶段,对于返回success之后,之后的参谋2发送请求无效,被返回前一步已经确认的进攻消息。至此,所有的角色都知道了进攻时间,这次任务传输完成。
再来看一个更复杂的例子,推理一下算法:
在这里插入图片描述
全局都是多数派,所以将军选择奇数个。
参谋1请求,通信兵再去将军3的路上被俘虏,只有将军1和将军2返回OK。这时,参谋2又进行请求,在去将军1的路上被俘虏,这里的将军2收到编号2时,会进行和编号1比较大小,2>1,所以保留编号2的请求,对参谋2返回OK。参谋1进行accept,将军1成功,但将军2的编号2和编号1不一致,失败拒绝。参谋2进行accept,将军2和将军3都成功了,2个将军都同意了,大于一半,这时就确定了进攻时间,但将军1不知道时间。参谋1被拒绝,又请求一次,将军1返回上次的,将军2返回进攻时间2,在accept阶段,因为返回编号2大于编号1,所以accept编号3、进攻时间2。至此,所有角色都知道进攻时间,算法结束。
在这里插入图片描述
算法也有一些问题,最常见的就是在高并发时会出现活锁,解决也不难。
当然这只是非常基础的Paxos算法,有很多不足之处,无法用在工业界实际运用上,下节将介绍基于这个算法的变形和修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值