10

paxos协议通俗理解

 3 years ago
source link: https://www.zenlife.tk/paxos.md
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

paxos协议通俗理解

2012-09-16

从提议者的角度来观察:

第一阶段,获取提议权

某提议者:

我要提议! 消息编号SN1 (消息编号是提议者自己编号的,并且保证每一轮大于其它所有提议者的上一轮编号 比如说提议者甲的各轮提议编号1 5 9 13... 提议者乙的各轮提议编号2 6 10 14... 提议者丙的各轮提议编号3 7 11 15)

投票者的反应:

A说我认同你的提议权 B懒得鸟你,不回你话(即是拒绝你提议的权利) C我已经接受了另一个人的提议(消息编号SNX,提议内容是VX),我可以认可你的提议权(消息编号SN1)。但丑话说在前面:如果你跟他提议的内容是一样的,我接受你的提议,否则我不接受你的提议。(就是现实生活中的,我可以不同意你的观点,但我不剥夺你发表观点的权利)

提议者若被大多数认同了提议权,进入第二阶段,提议内容

提议者是个没主见的人,如果在提议权阶段投票者类型都是A,他只能提出自己的提议(SN1,V1)

但如果提议权阶段包含了C类型的回复,为了讨好C类型的投票者,他就发送会被C接受的提议内容。

来自多个C类型回复中提到的提议可能有好多个不同的(SNx,Vx),选最新的那个,即SNx最大的那个对应的Vx,发出消息(SN1,Vx)

投票者: 同意你的提议/不理你 如果收到多数同意了,就意味着这个提议被接受了。否则发起新一轮的提议权(SN2)。

从投票者的角度来观察:

提议权阶段

有人在喊“我要提议! 消息编号SN1”

B类型的投票者,我上次把提议权给某人了,而且那个人消息(SNX)到的比这家伙的SN1新。无视他的请求。

AC类型投票者的前提条件是,他的消息SN1比我上次承诺提议权的消息SNX都要新。

A:我同意你的提议权,因为我之前并没接受谁的提议。

C:我上次已经同意某人了(SNX,VX)。(考虑到你的消息比他新SN1>SNX)我可以同意你的提议权,但不一定接受你的提议哦,亲。

如果这个提议(SN1)比之前给予提议权的消息编号(SNX)旧,即SN1


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK