Paxos算法:解决分布式系统中基于消息传递高度容错的一致性算法 ,是目前公认的解决分布式一致性问题最有效的算法之一
Paxos算法解决的问题:快速正确的在一个分布式系统中对某一个数据达成一致,并且保证不论发生任何异常都不会破坏整个系统数据的一致性
一,Paxos产生的背景
在分布式系统中,总会发生如机器宕机或网络异常导致消息的丢失,延迟,重复,乱序等情况,Paxos算法的出现就是为了解决如上问题,Paxos需要在一个可能发生上述情况的分布式系统中快速且正确的在集群内部对某一个数据达成一致 ,并且保证不论发生以上任何情况,都不会破坏系统的一致性
二,Paxos的描述和流程
在一个Paxos系统中所有节点都被划分成三种角色:
Proposer:提案者
Acceptor:接受者
Learner:学习者
每一个节点可以兼任多种角色
Paxos算法流程分为三个阶段:
1),Prepare准备阶段
注:promise就是Acceptor承诺让当前的Proposer当领导者
2),Accept接受阶段
注:当前Proposer通过多数的Acceptor的Promise成为领导者时,提案或者任务可以得到Accept的授权成为绝议
3),Learn学习阶段
三,Paxos的实现细节
1)Propare阶段:Proposer生成全局唯一且递增的Proposal ID,向所有Acceptor发送Propose请求,这里无需携带提案内容,只携带Proposal ID即可
2)Promise:Acceptor收到Propose请求后,做出"两个承诺,一个应答"
不再接受Proposal ID小于等于(注:这里是<=)当前请求的propose请求
不再接受Proposal ID小于(注:<)当前请求的Accept请求
不违背以前做出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案Value和Proposal ID,没有则返回空值
3)Propose:Proposer收到多数Acceptor的Promise应答后,从应答中选择Proposal ID最大的提案的Value,作为本次要发起的提案,如果所有的应答提案Value均为空,则可以自己自定义提案的Value,然后携带当前Proposal ID,向所有Acceptor发送Propose请求
4)Accept:Acceptor收到Propose请求后,在不违背自己之前做出的承诺下,接受并持久化Proposeal ID和提案Value
5)Learn:Proposer收到多数Acceptor的Accept后,绝议形成,将形成的绝议发送给所有的Learner
四,Paxos算法产生的多种情况
设有A,B,C,D,E五位议员,就防疫措施进行绝议
一,情况1
A就防疫措施提出全民普筛的方式,B-E进行表绝
注:相当于有一个Proposer提案者,多个Acceptor接受者
A发起1号Proposal ID 1的Propose(无),等待Acceptor的Promise承诺
B-E回应Promise承诺
A在收到两个及以上就会发起全民普筛的提案Proposeal
B-E回应Accept表示同意提案
通过Proposal提案
交与Learner执行
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109