本文主要是介绍分布式 Paxos和Fast Paxos算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一. Paxos
算法中的参与者主要分为三个角色,同时每个参与者又可兼领多个角色
- Client:产生议题者 –> 交付Proposer提出
- Proposer:提议者 –> 提出提案(提案编号和提议的value)
- Acceptor:决策者 –> 收到提案后可以决定是否accept
- Learner:最终决策学习者 –> 只能学习被批准的提案
Acceptor必须最少大于等于3个,并且必须是奇数个(保证一定产生多数胜出)
保证一致性的方法
- value只有在被Proposer提出之后才可被批准
- 在一次Paxos算法执行实例中,只会选择一个value
- Learner只可获得被批准的value
四个约束
- P1: 一个Acceptor必须accept第一次收到的提案;
- P2a:一旦一个具有value v的提案被choose,那么之后任何Acceptor再次accept的提案必须具有value v;
- P2b:一旦一个具有value v的提案被choose,那么之后任何 Proposer 提出的提案必须具有value v;
- P2c:如果一个编号为n的提案具有value v,那么存在一个多数派,要么他们中所有人都没有accept编号小于n的任何提案,要么他们已经accpet的所有编号小于n的提案中编号最大的那个提案具有value v;
Basic Paxos
分为两个阶段
prepare阶段:
- 当Porposer希望提出方案V1,首先发出prepare请求至大多数Acceptor。Prepare请求内容为序列号
<SN1>
; - 当Acceptor接收到prepare请求
<SN1>
时,检查自身上次回复过的prepare请求<SN2>
- 如果SN2>SN1,则忽略此请求,直接结束本次批准过程
- 否则检查上次批准的accept请求(SNx,Vx),并且回复(SNx,Vx);如果之前没有进行过批准,则简单回复OK
accept批准阶段:
1a. 经过一段时间,收到一些Acceptor回复,回复可分为以下几种:
1) 回复数量满足多数派,并且所有的回复都是<OK>
这篇关于分布式 Paxos和Fast Paxos算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!