Paxos算法学习笔记

学习了1个多月,现在回头看,觉得要理解paxos算法,需要阅读下面三篇论文:

The part-time parliament [英文] [中文]

Paxos Made Simple [英文] [翻译]

Paxos Made Code [英文]


前两篇更多的是理论,第三篇介绍了paxos的实现。

阅读第三篇还是很有必要的,在看第三篇之前,我一直不理解一个paxos的instance到底指的是什么。


术语

ballot、提案、提议:一轮投票

决议、decree:状态proposed候选的值,同时发起的请求的值,可能取的值;状态passed确定的唯一值,一致的值,写到律簿的值

投票、vote:同意该提案的值

承诺、promise:出现在承诺不再接受某些提案

律簿、法典、ledger:记录通过的决议,包括一个编号,以及对应的内容。

实例编号、instance No、decree number:对应律簿中的编号

提案编号、ballot No:每个提案的编号不能重复

法定人数集、quorum:牧师这群人中的一部分,一般是多数派就行。

Leader、president:从proposer中选出来的,只让它发起提案


Basic Paxos算法能从众多的请求中唯一地确定一个值,Multi Paxos则是多次运行Paxos实例,从而得到一个唯一的序列。

Paxos算法角色

Proposer 发出提议 (提案:一个提案proposal,提案中含有决议(value))
Acceptor 参与投票
Learner 学习通过的决议

Acceptor被动参与投票。Paxos算法规定了Proposer和Acceptor的原则。

一个一致性算法需要保证:一次选举中只批准一个决议(value),只有被提出(proposed)的决议才能被批准,只有已经被批准的决议才能被学习(即可以执行或保存这个决定的内容)。

1.决议(value)只有在被 proposers 提出后才能批准(未经批准的决议称为“提案(proposal)”);

2.在一次 Paxos 算法的执行实例中,只批准一个 Value;

3.learners 只能获得被批准(chosen)的Value。


safety condition:If in round M a proposal V is chosen, then every higher-numbered proposal must have value V.

数学结论(β:表决集合)

B1(β):表决编号唯一

B2(β):β中任意两个表决的法定人数集(quorum)至少有一个牧师是相同的。

B3(β):对β中任一表决B,如果B的法定人数集中有牧师在之前的表决投过赞成票。那么,表决B的 法令的内容应与那些投票的表决中最近的那轮的法令一致。

B3(β)解释:(论文中Fig.1.)红色为投票(phase 2b)
# decree          
2 α A B F  
5 β A B F   E
14 α   B   E
27 β A   F  
29 β   B F  


decree这一列是根据参与的Acceptor的投票历史记录确定的。所以2,5随便选,14只能选α

Q1:为什么提案编号不是连续的?
A1:因为可能有多个Proposer提出议案,它们提出的议案的编号是没有交集的。每个牧师都有一个无限的表决编号集合单独供自己使用。

提案参与的牧师不一样,这是因为法定人数集是提前选出来的。 另外一种实现是向所有人发送,然后收到多数派的回复提案算成功。

满足B1(β), B2(β), B3(β)
保证一致性:同一个法令编号,一旦达成结果。今后都将会是同一个结果,因为B3,无法篡改。只达成一条一致的法令
不保证进展性

初级协议 Preliminary protocol 

使B1成立:机器i发起的表决编号 可以使用:N+i,2N+i

使B2成立: 选择法定人数集

使B3成立:p在发起表决前,需要找出Maxvote(b,Q,β)dec,也就是对于Q中的每一个q找出Maxvote(b,p,β)(编号最大的投票)。

一个牧师p在发起表决之前,需要找出MaxVote(b, Q,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值