分布式一致性原理学习笔记(3)
来源:互联网 发布:威海手机数据恢复公司 编辑:程序博客网 时间:2024/05/22 12:43
Paxos算法
算法作者:Leslie Lamport(莱斯利·兰伯特)
Paxos 算法的核心是一致性算法 “synod”。从一致性问题的描述来理解算法需要解决的实际需求。
问题的描述
假设有一组可以提出提案的进程集合,那么对于一个一致性算法来说需要保证以下几点:
1:在这些被提出的天中,只有一个会被选定。
2:如果么有提案被提出,那么久不会有被选定的提案。
3:当一个提案被选定后,进程可以获取这些被选定的提案信息。
安全性需求如下:
1:只有被提出的提案才能被选定
2:只有一个值被选定
3:如果某个进程认为某个提案被选定了,那么这个提案必须是真的被选定的那个。
Paxos算法的目标就是保证最终有且只有一个提案被选定,当被选定后,进程最终也能获取到被选定的提案。
三种参与角色
Proposer,Acceptor,Learner
问题的解决
最简单的选定
允许以个Accepetor, 所有的Proposer只能发送给这个Acceptor,Acceptor选择它接收到的第一提案作为被选定的提案。简单,但是一旦Acceptor出现问题,整个系统就无法工作。
更好的选定,应该符合以下判定
P1:一个Acceptor必须批准它收到的第一个提案。
p1引入的问题:不同的Proposer分别提出多个提案。任意一个Acceptor出问题,都无法保证正确的提案。所以引入
以 [编号,Value] 来标识一个提案。
P2:如果编号为M0,value值为V0的提案被选定了,那么所有比编号M0更高的,且被选定的提案,其Value值必须也是V0。
P2a:如果编号为M0,value值为V0的提案被选定了,那么所有比编号M0更高的,且被Acceptor批准的提案其Value值必须也是V0
P2b如果一个提案[M0,V0]被选定后,那么之后任何Proposer产生的编号更高的提案,其Value值为V0
Proposer生成提案
阶段一:
Acceptor对于Proposer产生的提案Mn保持谨慎态度,Proposer产生Mn的Prepare请求 要Acceptor保证两点 一个是 不批准任何编号小鱼Mn的提案,二:如果已经批准了天,返回那个小于Mn 且当前最大的提案。
阶段二:
Proposer的prepare收到超过半数以上的 积极响应的话。进行Vn的选择。类似的根据prepare返回的两种情况。Vn取值也是有两种,一种是随意指定(所有的acceptor还没批准过)。另一种是批准的最大编号的Vn。此时 Proposer在进行真正意义的提案请求。
Acceptor 批准提案
对于Prepare请求: 任何时候响应一个prepare请求
对于Accept请求:不违背Accept现有承诺的前提下,任意响应Accept请求。
既:一个Acceptor只要尚未响应过任何编号大于Mn的prepare请求,那么它就可以接受这个编号为Mn的提案。
提案的获取
方案一:
关播提案,一旦Acceptor批准了一个提案,就广播该天给所有的learner。此法请求超级多。
方案二:
引入主 Learner 。批准的提案只发给主Learner。主Learner负责同志其他Learner。此法避免不了Learner的单点故障。
方案三:
引入组主learner 。批准的提案发给Learner集合。通过集合通知给各个Learner
提案申请出现的问题
死循环问题
Proposer P1提出了编号为M1的提案,并且通过了Prepare请求。准备正是提交。此时 Proposer P2提出了M2的提案,率先完成了prepare请求。于是 Acceptor承诺不批准小于M2的提案,此时P1的正是提案请求会被进行忽略。于是P1又进入了Prepare请求。提出了M3提案。这又导致P2的M2被忽略。P2又进入Prepare请求。提出了M4 如此循环往复。 P1 P2就陷入了死循环。
避免死循环
Proposer指定一个主Proposer只有它能提交提案。Proposer接受其他Proposer的提案进行过滤。一旦发现当前流程中有一个编号更大的提案被提出。那么它就丢弃原来的编号小的提案。最终选择一个足够大编号的天。 问题解决。
- 分布式一致性原理学习笔记(3)
- 分布式一致性原理学习笔记(1)
- 分布式一致性原理学习笔记(2)
- 分布式一致性原理学习笔记(4)
- 分布式一致性算法学习笔记
- 分布式一致性Paxos算法学习笔记(一)
- 分布式一致性Paxos算法学习笔记(二)
- 分布式一致性Paxos算法学习笔记(三)
- Memcache学习笔记(6)- memcache分布式算法 - 一致性hash
- 分布式一致性Paxos算法学习笔记(二):算法详解
- 分布式一致性协议学习笔记(一)--Paxos
- (笔记)理解和学习分布式一致性协议:raft
- 分布式一致性Paxos算法学习笔记
- 《彻底解决分布式系统一致性问题》学习笔记
- 分布式一致性原理与实践(一)
- 分布式一致性原理
- 从Paxos到Zookeeper分布式一致性原理与实践 -笔记
- 《从Paxos到zookeeper分布式一致性原理与实践》笔记
- Leetcode 188. Best Time to Buy and Sell Stock IV
- CSS中的渐变效果
- 95.Validate Binary Search Tree-验证二叉查找树(中等题)
- 斐波那契数列
- code2
- 分布式一致性原理学习笔记(3)
- HDOJ 5929 Basic Data Structure 【2016CCPC东北地区赛】STL
- 如果你的电脑中有几个xcode版本
- 关于面向“专家”的实用技术与面向“大众”的普及技术
- Android中解决ListView等视图setOnItemClickListener()方法失效的问题
- how to get UDID
- 今夜月色真美
- 异常过滤器
- 51NOD 1402 最大值