分布式一致性Paxos算法学习

    技术2022-05-19  21

    http://www.cnblogs.com/ychellboy/archive/2010/01/01/1637265.html

     

    2.1.3 Proposer行为分析 

    (1.1) 向所有的Acceptors发送Prepare(N_A)请求;

    (1.2) 如果收到Reject(N_H)信息,那么重新发送Prepare(N_H+1)

    (2.1) 如果收到Acceptors集合的任意一个MajorityPromise(N_A, V_A)回复,那么如果所有的V_A均为空,Proposer自由选取一个V_A’,回发Accept(N_A, V_A);否则回发Accept(N_A, V_i)

    (2.2) 如果收到Nack(N_H),回到(1.1)过程,发送Prepare(N_H+1)

    (3.1) 如果收到任意一个Majority所有成员的Accepted信息(表明选举完成),向所有Proposers发送自身成为leader的消息;

    (3.2) Learner发送value值。其中:

    N_A为该次提案的编号;

    N_H为当前提案的最高编号;

    V_iV_A中提案编号最高的value

    2.1.4 Acceptor行为描述 

    (1.1)接收Prepare(N_A),如果N_A>N_H,那么回复Promise(N_A, V_A),并置N_H=N_A;否则回复Reject(N_H)

    (2.1)接收Accept(N_A, V_A),如果N_A<N_H,那么回复Nack(N_H)信息(暗示了该Proposer提完案后至少有一个其余的Proposer广播了具有更高编号的提案);否则设置this.V_A=V_A,并且回复Accepted信息。其中:

    Promise(N_A, V_A):向Proposer保证不再接受编号不大于N_H的提案;

    AcceptedProposer发送提案被通过信息;

    V_AAcceptor之前审批过的提案(允许为空);

    N_HAcceptor之前接收提案的最高编号。

    2.1.5 Learner行为描述 

    相对来说,Learner的行为理解更简单一些:学习value,开始执行任务。

     

    2.1.6 整体描述 

    算法在执行过程中,实例和实例之间是异步的;角色和角色之间既有同步的行为(因为一个完全异步的系统中,一致性问题将是无法被解决的[6]),又有异步的行为。下表2.1中按照我的理解以全局的角度来说明这其中的关系:     

                                         表2.1 一次Paxos实例

     

    角色 / 时段

    Phase 1

    Phase 2

    Phase 3

    Proposer (P)

    [1]竞争Leader: A发送prepare

    [1]接收Apromise

    [2]选取一个value并发送accept

    (*)

    Acceptor (A)

    [1]接收处理Pprepare

    [2]回复rejectpromise

    [1]接收处理accept

    [2]回复acceptednack

    [3]通知L

    (*)

    Learner (L)

    [1]接收广播学习value

    [2]创建Proposer对象学习value


    最新回复(0)