Paxos 个人理解

来源:互联网 发布:linux 发送arp广播包 编辑:程序博客网 时间:2024/05/22 17:06

Paxos算法中主要的角色有:

  • Client:发起请求的人
  • Acceptor (Voters):负责选举头头片
  • Proposer:负责向Acceptor发起Clinet的提议
  • Learner:当提议决定的以后,需要有所行动的人
  • Leader:选举出来的做决策的Leader

basic Paxos

站在Proposer的角度

  1. Prepare阶段:
    1) 向Acceptors发送 【prepare请求 】提案号N,然后等待Acceptors的回复
    2) 当收到一定数量的Acceptors的【承诺】后,这个时候就需要设置提案。
    A.如果任何Acceptor已经是Accepted状态,那么就设置为其中提议号的内容。
    B.否则,Proposer选择任意想设置的内容
  2. Accept阶段
    1) 查看所有回复的中,选择最大提案号N_m向Acceptors发起【Accept请求】。等待Acceptors的回复
    2) 如果收到大多数的Acceptors发回的【Accepted请求】,则认为提案N_m最终提案,否则

站在Acceptor的角度

  1. Promise阶段:
    1) 收到Proposer【prepare请求 】提案号为N,这个时候分两种情况:
    A. 如果N比之前的【prepare请求 】的大,则Acceptor【承诺】会忽略掉所有比N小的【prepare请求
    B. 如果Acceptor已经向某个Proposer发送过【Accepted消息*】后,则会发送已经Accepted的提案号和提案内容回去。
  2. Accept阶段
    如果收到一个【Accept请求】提案号N_n比满足之前Promise的【承诺】,则发送【Accepted消息】,之后就不再接受任何【Accept请求
0 0