Paxos一致性算法原理分析

Paxos协议算法就是在分布式系统环境中, 就某个值(决议)达成一致而出现的一种一致性问题解决方案。同时Paxos 算法是一种基于消息传递模型的一致性算法;算法的执行条件首先要处在一个可靠的通信环境中, 即在异步通信过程中, 发送的数据可能会被丢失(lost), 延长(delayed), 重复(duplicated), 但不会出现被篡改;


1 . Paxos 包含下面两种解决方案:

  • Single-Decree Paxos:决策单个
  • Value Multi-Paxos:连续决策多个Value,并且保证每个节点上的顺序完全一致,多 Paxos 往往是同时运行多个单 Paxos 协议共同执行的结果。

本文我们只关注单 Paxos 的原理,理解了单 Paxos,多 Paxos 也就不难理解了;

2 . Paxos 算法包含三个角色:

  • 提议者(Proposer):提议者可以提出提议(数值或者操作命令)以供投票表决
  • 接受者(Acceptor):接受者可以对提议者提出的提议进行投票表决,提议有超半数的接受者投票即被选中
  • 学习者(Learner):学习者无投票权,只是从接受者那里获知哪个提议被选中

在单值决策协议中,每个节点可以同时扮演以上多个角色;

3 . Paxos 算法中的几点规则:

  • 一个或多个节点可以提出提议
  • 系统必须针对所有提案中的某个提案达成一致(超过半数的接受者选中)
  • 最多只能对一个确定的提议达成一致
  • 只要超半数的节点存活且可互相通信,整个系统一定能达成一致状态,即选择一个确定的提议

4 . Paxos 算法过程:
协议流程图

1> [Proposer] 向所有的Acceptors发送Prepare(N_P)请求;
2> [Acceptor] 接收Prepare(N_P), 如果N_P>N_H, 那么回复Promise(N_P, V_P), 并置N_H=N_P; 否则回复Reject(N_H);
3> [Proposer] 如果收到Reject(N_H)信息,那么重新向所有的Acceptors发送Prepare(N_H+1)请求;
4> [Proposer] 如果收到Acceptors集合的任意一个Majority的Promise(N_P, V_P)回复,这里假如所有的V_P均为空, Proposer可以自由选取一个V_P’, 并回发Accept(N_P, V_P’ ); 否则回复Accept(N_P, V_i );
5> [Acceptor] 接收Accept(N_P, V_P’), 如果N_P < N_H, 那么回复Nack(N_H) [指示该Proposer提议完后至少有一个其他的Proposer广播了具有更高编号的提议]; 否则设置this.V_P=V_P, 并且回复Accepted信息;
6> [Proposer] 如果收到Nack(N_H), 则回到过程1, 发送Prepare(N_H+1);
7> [Proposer] 如果收到任意一个Majority所有成员的Accepted信息(表明选举完成), 向所有Proposers发送自身成为Leader的消息;
8> [Proposer] 向Learner发送Value值;

其中:

  • N_P 为该次提议的编号;

  • N_H 为Proposer当前提议的最高编号, 同时为Acceptor之前接收到提议的最高编号;

  • V_H 为Acceptor之前审批过的提议(允许为空);

  • V_i 为V_P中提议编号最高的Value;

    N_P为Proposer标识自身发起提议的编号, 整个分布式系统中所有的Proposal的序号不能重复而且每个Proposor自己用到的序号必须是递增的,通常的做法是,假设K台Server协同运行Paxos算法,那么Server_i(i=0…K-1)用的Proposal序号初始值为i,以后每次要产生新序号时递增K,这样保证了所有Server的Proposal序号不重复。
    Majority 通常指所有Proposor集合数目的一半以上, 即 M < S & 2M > S;

5 . 用详细的实例一步步了解Paxos 实现原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值