Paxos算法

一、算法故事

希腊岛屿Paxon 上的执法者(legislators,后面称为牧师priest)在议会大厅(chamber)中表决通过法律,并通过服务员传递纸条的方式交流信息,每个执法者会将通过的法律记录在自己的账目(ledger)上。问题在于执法者和服务员都不可靠,他们随时会因为各种事情离开议会大厅,并随时可能有新的执法者进入议会大厅进行法律表决,使用何种方式能够使得这个表决过程正常进行,且通过的法律不发生矛盾。

说明:不难看出故事中的议会大厅就是我们的分布式系统,牧师对应节点或进程,服务员传递纸条的过程就是消息传递的过程,法律即是我们需要保证一致性的值(value)。牧师和服务员的进出对应着节点/网络的失效和加入,牧师的账目对应节点中的持久化存储设备。上面表决过程的正常进行可以表述为进展需求(progress requirements):当大部分牧师在议会大厅呆了足够长时间,且期间没有牧师进入或者退出,那么提出的法案应该被通过并被记录在每个牧师的账目上。

此段摘自百度百科

二、阶段

1、Prepare/Promise阶段

客户端发送由序列号和最新值封装好发送到接受进程,接收进程比较当前持有序列号:如果新序列号大,则发出promise不再接收更小的序列号发送的消息,这个promise发送到准备提交建议新值的进程。

当回复许诺的进程数占所有进程过半数时[X > n/2 + 1],默认达成共识。

2、Propose/Accept阶段

达成共识后,提交建议新值的进程向所有许诺进程发送建议,若所有许诺进程都接受了新值且反馈,则这个新建议将被所有其他进程接受,整个算法过程结束。

如果接受accept过程出现问题,那么此时读操作是会失败的,不过系统此时已经是一致性的状态,paxos会去重复接受阶段让大部分进程接受,读进程只要确认到过半数的一致性新值即可,完成算法过程。

 

这些只是个人的理解,在此处描述出来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值