分布式笔记一致性协议
Posted Shadowplay
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式笔记一致性协议相关的知识,希望对你有一定的参考价值。
一致性协议
一、2PC与3PC
请自行回忆2PC与3PC的过程,及在正式提交阶段的处理单点问题的区别。分析各自的优缺点。
二、Paxos算法
一)Paxos算法解决的问题:分布式系统中如何对一个问题达成共识。
二)从提案到表决流程涉及到的角色:
1.提案者(Propser):负责提出议案,可能有多个。
2.接受者(Accpter):对指定的提案进行表决,一定有多个。
3.学习者(Learner):收集接受者对提案的表决,根据少数服从多数原则,形成最终提案表决。
三)Paxos算法描述
- 第一阶段(Prepare阶段)
Proposer:
- 选取提案编号n,并向大多数Acceptor发送携带编号n的prepare请求。
Acceptor:
- 如果收到的提案编号n比自己已经收到的编号都要大,则向Proposer承诺不再接收编号小于n的提案,如果之前接受过提案,则同时将接受的提案中编号最大的提案及其编号发给Proposer。
- 如果收到的提案编号n小于自己已经收到提案编号的最大值,则拒绝。
- 第二阶段(Accept阶段)
Proposer:
- 首先,对接收到响应,逐条处理:
- 如果接收到拒绝,则暂不处理。
- 如果接收到同意,同时还接收到Acceptor已经接受的提案,则记下该提案及编号。
- 处理完响应后,统计拒绝和同意个数:
- 如果大多数拒绝,则准备下次提案。
- 如果大多数同意,从这些Acceptor已经接受的提案中选取提案编号最大的提案作为自己的提案,没有则使用自己的提案,逐个向Acceptor发送Accept消息。
Acceptor:
- 如果收到的提案编号n小于自己已经收到最大提案编号,则拒绝。
- 如果收到的提案编号n等于自己已经收到最大提案编号,则接受该提案。
- 如果收到的提案编号n大于自己已经收到最大提案编号,则拒绝。
- 形成共识(与Prepare&Accept阶段并行)
Acceptor:
- 每当接受一个提案,则将该提案及编号发给Learner。
Learner:
- 记录每一个Acceptor当前接受的提案,一个Acceptor先后发来多个提案,则保留编号最大的提案。
- 统计每个提案被接受的Acceptor个数,如果超过半数,则形成共识。
更多:https://www.zhihu.com/question/19787937
以上是关于分布式笔记一致性协议的主要内容,如果未能解决你的问题,请参考以下文章
从Paxos到Zookeeper分布式一致性原理与实践 -笔记
从Paxos到Zookeeper分布式一致性原理与实践 -笔记
线性一致性与全序广播------《Designing Data-Intensive Applications》读书笔记12