Basic-Paxos&&leader

a.基础协议

b.完整议会协议

Proposer :提议者 Acceptor:决策者 Learner:学习者(同步决策者),每个进程可以同时担任其中的一个或者多个角色

Paxos在一个由多轮表决构成的集合上定义了3 个条件:

B1(ß): ß中的每一轮表决,都有一个唯一的编号

===================================================

B2(ß): ß中任意两轮表决的法定人数集中,至少有一个公共的牧师成员

===================================================

B3(ß):对于每一轮表决B,如果B的法定人数集中的任何一个牧师在p中一个更小轮的表决中投过赞成票,那么B的法令与所有这些更小轮表决中的最大的那次表决的法令相同


任一议员(或者牧师)需维护这三个记录:

lastTried[p]:由p 试图发起的最后一个表决的编号,如果没有发起过则记录-∞

prevVote [p] :由p投票的所有表决中,编号最大的表决对应的p的投票,如果没则记录-∞

nextBal [p]:由p发出的所有lastVote(b,v)消息中,表决编号b的最大值


(1)牧师p选择一个比lastTried[p]大的表决编写b,设置lastTried[p]为b,然后发送NextBal( b)消息给某些牧师.

------------------------------------------------------------------------------------------------------------------------

(2)q在从p收到一个b大于nextBal[q]的NextBallot(b)消息后,牧师q将nextBallot[q]设置为b,然后发送一个lastVote (b,v)消息给p,其中v等于preVote[q] (b<= nextBal [q]的消息被忽略)(如果preVote[q]为空也可以)

------------------------------------------------------------------------------------------------------------------------

(3)p 从某个多数集合Q 的每个成员都收到一个lastVote(b, v)消息后,牧师p发起一个编号为b,法定人数集为Q,法令为d的新表决,其中d的选择遵守B3(ß)条件。然后他发送一个BeginBallot(b,d)消息给Q中的每一个牧师

------------------------------------------------------------------------------------------------------------------------

(4)q在收到一个b= nextBal [q]的BeginBallot( b,d)消息后,牧师q在编号为b的表决中投出他的一票,设置prevVote[p]为这一票,然后发送Voted( b,q)消息给p (b=! nextBa[q]的BeginBallot(b, d)消息将被忽略)

------------------------------------------------------------------------------------------------------------------------

(5)在p收到Q中每一个Voted(b,d)消息后(这里Q表示b的法定人数集合,b=lastTriped,他p 将d(这轮表决的法令)记录到他的律簿上,然后发送一条Success( d )消息给每个议员(牧师)

------------------------------------------------------------------------------------------------------------------------

(6)一个牧师在接收到Success (d)消息后,将法令d写到他的律簿上。


leader选举基本协议维护了一致性,但是没有保证任何进展性,因为它仅仅规定了一个牧师可以怎么做,它没要求他一定要做任何事情


如果满足了总统选举要求,那么完整协议将具有如下特性:如果多数的议员在议会厅内,并且在T+99分钟内没有人进出会议厅. 那么在这段时间的最后,议会厅中的每个牧师的律簿上都会记下一条法令.

7 4

T T-11 | T+99 = (T+22+22) + (55)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值