Paxos算法学习总结

PAXOS算法学习

一、       算法介绍

    Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。[1] 这个算法被认为是类似算法中最有效的。

————出自维基百科

二、       问题假设及描述

    Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致。一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。因此从20世纪80年代起对于一致性算法的研究就没有停止过。节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。Paxos 算法就是一种基于消息传递模型的一致性算法。1

    为描述 Paxos 算法,Lamport 虚拟了一个叫做 Paxos 的希腊城邦,这个岛按照议会民主制的政治模式制订法律,但是没有人愿意将自己的全部时间和精力放在这种事情上。所以无论是议员,议长或者传递纸条的服务员都不能承诺别人需要时一定会出现,也无法承诺批准决议或者传递消息的时间。但是这里假设没有拜占庭将军问题(Byzantine failure,即虽然有可能一个消息被传递了两次,但是绝对不会出现错误的消息);只要等待足够的时间,消息就会被传到。另外,Paxos 岛上的议员是不会反对其他议员提出的决议的。

    对应于分布式系统,议员对应于各个节点,制定的法律对应于系统的状态。各个节点需要进入一个一致的状态,例如在独立Cache的对称多处理器系统中,各个处理器读内存的某个字节时,必须读到同样的一个值,否则系统就违背了一致性的要求。一致性要求对应于法律条文只能有一个版本。议员和服务员的不确定性对应于节点和消息传递通道的不可靠性。

————出自维基百科

三、       算法过程描述

1.  三种角色:proposers、acceptors、learners。

    Proposers:负责提出决议。

    Acceptors:负责批准决议。

    Learners:学习决议。

2.  问题可被描述为:

    1) 只有被提出的决议才可能被批准

    2) 在一次算法的过程出,只选择一个决议

    3) Learners只能学习到已经被批准的决议。

3.  算法的两个阶段:

    一个提案(proposal)由两部分组成,编号及决议。

    1) preparerequest:

        由proposer为提案选择一个编号n,并发送prepare 请求发送给一半以上的acceptor。

        当acceptor接收到编号为n的提案时,如果n大于它之前所有回复过的Prepare请求的编号,则acceptor将n及上次批准的提案返回给proposer,并承诺将不再接收任何编号比n小的提案;

    2) acceptrequest:

    当proposer接收到一半以上的acceptor的prepare 请求后,它将向一半以上的acceptor提交提案,提案的编号为n,值为acceptor返回的值,如果之前acceptor没有选择任何提案,则proposer将选择一个值,当acceptor接收到accept请求时,将批准此提案。

    此过程为正常的过程,中间可能出现不同的情况,如acceptor在接收accept请求时,发现有一个更高的编号提案被请求,则放弃编号低的提案,并可以通知proposer放弃此次提案。详细的说明及证明过程请参见,《Paxos MadeSimple》Leslie Lamport 01 Nov 2001。

4.      算法的详细过程描述:

图1  phase 1

图2 phase 2

四、       参考资料

1.       Paxos算法  维基百科

2.       分布式一致性Paxos算法学习笔记ychellboy的博客

3.       Lamport,Paxos made simple, SIGACT News 32(4):18-25, 2001

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值