paxos学习笔记——三种角色行为过程

来源:互联网 发布:python问卷系统源码 编辑:程序博客网 时间:2024/06/06 00:43

关于什么是paxos,网上有很多介绍,这三种角色分类是什么,我就不多说了,直接上干货。

在paxos算法中可以分为三个阶段

一、阶段一

1、  proposter向acceptors发送prepare(N_A)。

2、  acceptors收到prepare(N_A)如果N_A>N_H,回复了promise(N_A,V_A),并置N_H=N_A。否则回复reject(N_H)。

二、阶段二

1、  proposter收到acceptors集合中的任意一个majority发送的promise(N_A,V_A)后,如果所有V_A为空,则自由选择一个V_`发送Accept(N_A,V_A`),否则选择V_A中具有最大编号的value的V_i,发送promise(N_A,V_i)。

2、  如果proposter收到reject(N_H),则回到第一阶段第一步发送prepare(N_H+1).

3、acceptors如果收到promise(N_A,V_A`)或者promise(N_A,V_i),如果N_A<N_H,则回复nack(N_H),暗示已经有至少一个除了他之外的proposter已经广播过具有更高编号的提案。否则置本地的V_A=V_A,并回复accepted。

4、proposter如果收到nack(N_A),则回到第一阶段第一步发送prepare(N_H+1).

5、如果proposter收到了acceptors集合中的任意一个majority发送的accepted,表明选举完成,向其他proposters发送自己成为leader的消息。向learners发送value值。

三、阶段三

1、  learns学习value然后执行任务。

注:

N_A:为该次提案的编号。

N_H:为当前提案的最高编号。

V_i:是V_A提案中编号最高的value。

promise(N_A,V_A):向proposter保证不再接受编号大于N_H的提案。

Accepted:向proposter发送决议被通过的消息。

V_A:acceptors之前审批过的决议。

N_H:acceptors之前接收提案的最大编号


0 0
原创粉丝点击