老师帮我看看我自己理解的Paxos算法有没有什么问题
来源:8-14 【章节总结】重难点总结&课后讨论题

慕侠5591593
2021-08-09
Paxos算法
一种基于消息传递的分布式一致性算法
在一座小岛上没有固定的议员,议员可以在议会上随意进出(分布式节点会出现各种情况,导致失联或者上限),那么如何保证议题的讨论与通过呢?这个就是Paxos这个算法的用处(解决在分布式环境下写数据的数据一致性)
首先分为三种角色:
- Proposer: 提出提案 (Proposal)。Proposal信息包括提案编号 (Proposal ID) 和提议的值 (Value)。
- Acceptor:参与决策,回应Proposers的提案。收到Proposal后可以接受提案,若Proposal获得多数Acceptors的接受,则称该Proposal被批准。
- Learner:不参与决策,从Proposers/Acceptors学习最新达成一致的提案(Value)
每次提案的提案编号都是增大的,
整个提案的流程分为两个阶段,第一个阶段是通知阶段,第二个阶段是通过阶段
当议员提出提案之后会通知所有的Acceptor,只有当Acceptor超过半数的Acceptor承诺同意之后该提案才可以往后进行。此时就有三种情况:第一种承诺同意,第二种不承诺同意,第三种,没反应,而第二种和第三种本质是一样的,都是无反应。
Acceptor每次只可以同意一个提案,如果新的提案id小于以前的提案id,就不会同意这个提案
当Proposer收到Acceptor承诺同意该提案的消息之后,会把提案的内容,在发送给Acceptor,这个时候Acceptor会看看这个提案id是不是大于等于最小的id,如果大于等于那么就通过这个提案
当Acceptor通过提案后再把提案交给Learner,让他记住这个提案
1回答
-
paxos有一个严格的数学模型,还真不是这样可以表达清楚的,建议面试中避重就轻。如果像上文这样单纯的分成Proposer\Acceptor和Learner,反应出了Paxos算法中3类主体,不过细节上按照Paper的描述比这个复杂(数学上)。总的来说,既然是投票当然是多数服从少数,但是数学上,多数、少数其实很不好界定(毕竟一个分布式环境),你不知道总数!!不知道总数,就谈不上多数少数。因此 Paxos的协议, 有更巧妙的处理。 通常的,面试官真的需要你知道的是投票可以解决分布式一致性问题。还有ZK等等用的是Paxos算法的变种,包括Raft也是Paxos算法的一种简化。
012021-08-20
相似问题