paxos算法部分总结
来源:互联网 发布:2017暑运大数据报告 编辑:程序博客网 时间:2024/06/06 02:13
1、paxos是什么
是一种基于消息传递且具有高度容错特性的一致性算法。
2、算法陈述
1、提案选定
1、参与者提出一个编号为Mn的提案,然后向acceptor的某个超过半数的子集成员发出prepare请求。如果一个acceptor批准过的提案编号都小于Mn,那么acceptor会将自己批准的编号最大的提案反馈给参与者,同时该acceptor承诺不会批准任何编号小于Mn的提案。
2、如果参与者收到了半数以上的acceptor发送的针对其编号为Mn的提案响应,那么他就会发送一个针对[Mn,Vn]的accept给acceptor,其中Vn是参与者收到的提案响应中的提案编号最大的的值。如果acceptor未反馈提案响应,那么Vn可以使任意值。如果acceptor未批准编号大于Mn的prepare作出相应那么就通过这个提案。
白话文说明下,
参与者提交了一个编号为3的prepare到超过一半acceptor的组成集合中。如果一个acceptor批准过的提案编号都小于3,比如说批准了1,2.那么acceptor就将提案编号为2的提案反馈给参与者,同时该acceptor不再批准小于3的提案。
但参与者收到半数以上的acceptor发送的针对他提交的编号为3的提案的返回响应后。参与者可能收到编号为1 编号为2的提案。然后参与者就把编号为2的提案的值作为Vn 发出一个[3,Vn],到acceptor集合,也就是说参与者赞同提案编号为2的提案。
如果参与者收到的反馈不包含任何提案,那么他自己可以提出自己的提案的值。如果参与者提交的编号为3的prepare编号3小于acceptor中批准的最大编号,那么acceptor会忽略该请求。参与者重新提出新提案
提案获取
方案一、acceptor与learner多对多 ---复杂
方案二、选取主learner,然后主learner同步其他learner -----单点 脑裂
方案三、选取主learner集合,然后同步其他learner---介于两者之间
3、算法流程死循环
两个参与者同时依次提交prepare、accept 请求,那么acceptor就会依次反馈上一个的提案,拒绝新提案,形成死循环。可以使用选举主参与者提出提案,保持算法活性。
参考了从paxos到zookeeper分布式一致性原理与实践--倪超著 一书
- paxos算法部分总结
- Paxos算法学习总结
- paxos算法学习总结
- Paxos算法总结
- Paxos算法学习总结1
- 分布式一致性算法:Paxos (学习总结)
- 分布式一致性算法:Paxos (学习总结)
- Paxos算法
- Paxos算法
- Paxos算法
- paxos算法
- Paxos算法
- Paxos算法
- Paxos算法
- paxos算法
- paxos算法
- Paxos算法
- Paxos 算法
- matplotlib函数库使用scatter绘制散点图
- 浅析可变参数列表及实例分析
- hdu 6222 Heron and His Triangle
- LintCode 最大子数组(dp)
- 类抽象类接口_练习
- paxos算法部分总结
- 关于使用SQL Server LocalDB 一点体会
- hdu 5775 线段树
- linux解压
- eclipse创建maven web项目更改servlet版本小技巧
- 经验总结-完整介绍Android Studio中Git的使用之git的基本准备及提交代码到本地(一)-2
- Spring Boot学习总结(9)——SpringBoot集成Ehcache3.x
- ELK 完整部署和使用
- POJ 2318 TOYS <计算几何>