basic paxos,multi paxos
1.basic paxos:
集群内所有节点如何就一个值达成共识
角色:
1.提议者:提出提议(proposal).
2.接受者:对于提议要给出自己的回答.
3.学习者:接受达成共识的值,不参与投票和提议.
注意
1.除了学习者节点.每个节点都可以生成提议(proposal)和接受提议
2.共识的达成需要两阶段协议
3.不需要所有节点同意,过半同意即可.
流程:
1.提议一般是节点生成的.生成的提议可有使用p(id,value).其中id是提议编号.
2.一个节点生成提议后,会向所有节点发出确认的消息,消息只需要携带id即可.注意:这里只是向所有节点确认,我这个提议是不是合法.那么怎么算合法呢?就是id是不是最大的!这个是所有节点.包含自己
3.当节点收到提议确认后,需要按照如下的原则进行回应
- 如果节点已经通过某提议,那么返回最大的提案编号,否则返回空,并承诺之后,不会响应任何提议小于该编号的请求
- 如果提议编号小于该节点收到过的最大编号,那么不去响应
例子:
有 ABC三个节点,用户提出两个提议.(1."a"),(3,"b").
1.prepare阶段
- A,B先收到(1,)提议,返回无提议.并承诺不会接受小于等于1的提议; C先收到(5,),返回无提议,.并承诺不会接受小于等于5的提议;
- A,B收到(5,)提议,5>1,因此作出回应,因为当前尚无已通过提议,因此还是返回空,并承诺,之后不会接受小于5的提议;C接收到(1,)的提议,1<5.因此不做回应
2.commit阶段
由于在第一阶段,两个提议分别收到了AB的正确响应,ABC的正确响应.因此都成功的进入了commit阶段
- A,B,C收到了(1,"a")的提议.但是此时已经承诺了,不会再处理小于5的提议.因此不响应;
- A,B,C收到了(5,"b")的提议.满足要求,所以成功设置为5.
总结:
1.basic paxos通过两步提交达成了共识
2.通过过半机制,可以允许节点故障
2.multi paxos
multi paxos是对多个值进行协商.但是想想,对一个值进行协商的basic paxos,步骤已经很多了.
1.需要两阶段提交
2.每个节点都能提交协议.如果a提交了协议,响应失败.那么a再增加提议编号,重新提交,会有什么后果.那就没完了.恶性竞争了.
因此multi paxos对basic paxos做出了优化
leader机制
只有leader可以产生提议.就不会产生提议冲突,也就不用去prepare了.那么怎么选举出leader呢?
- chubby使用basic paxos产生leader.chubby作为第一个生成落地的,读写都从leader节点走强一致.性能不好
- zab通过投票产生leader(投票池,term,事务id,节点id).读可以在follow节点(最终一致性),写在leader节点顺序执行(强一致性),对同一个客户端的请求是排队处理的(参看zk源码)
- raft选举机制(随机时间,term,事务id优先,先到先得).可以参看(etcd源码系列)
当领导者处于稳定状态时,省掉准备阶段,直接进入接受阶段---兰伯特说的,不是鲁迅
总结下:
1.multiPaxos兰伯特只是提出了思想,并没有具体实现,因此各个系统各有各的做法,不过目前来看raft简单易懂.容易实现
2.减少非必须的协商,提高效率.
basic paxos,multi paxos相关推荐
- Paxos协议之Basic Paxos/Multi Paxos
论文Paxos made simple从简单易懂的角度阐述了Paxos算法.之后,2013年斯坦福大学的Diego Ongaro做了一个讲座:Implementing Replicated Logs ...
- Multi Paxos
Multi Paxos是什么 Basic Paxos 只能对一个值形成决议,决议的形成至少需要两次网络来回,在高并发情况下可能需要更多的网络来回,极端情况下甚至可能形成活锁 实际应用中我们常常需要连续 ...
- 理解分布式一致性:Paxos协议之Cheap Paxos Fast Paxos
理解分布式一致性:Paxos协议之Cheap Paxos & Fast Paxos Cheap Paxos Message flow: Cheap Multi-Paxos Fast Paxos ...
- 理解分布式一致性:Paxos协议之Generalized Paxos Byzantine Paxos
理解分布式一致性:Paxos协议之Generalized Paxos & Byzantine Paxos Generalized Paxos Byzantine Paxos Byzantine ...
- 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
文章目录 前言 CAP理论 C consistency 一致性 A availability 可用性 P partition tolerance 分区容错性 一致性模型 弱一致性 强一致性 强一致性算 ...
- 分布式一致性协议 之 Paxos协议
1.什么是Paxos Paxos协议其实说的就是Paxos算法, Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一. Paxos由 莱斯利· ...
- 1.1.0-简介-P6-Paxos
文章目录 1.世界 引言 Basic Paxos Multi Paxos 小结 1.世界 引言 <分布式系统理论基础 - 一致性.2PC和3PC>一文介绍了一致性.达成一致性需要面临的各种 ...
- Zookeeper ZAB协议原理浅析
文章目录 前言 1. 基本角色和概念 2. Leader Election 3. Discovery 4. Synchronization 5. BroadCast 后记 前言 DTCC 要在下周一到 ...
- Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法。
Paxos算法是莱斯利·兰伯特(Leslie Lamport)1990年提出的一种基于消息传递的一致性算法.Paxos算法解决的问题是一个分布式系统如何就某个值(决议)达成一致.在工程实践意义上来说, ...
最新文章
- Beanstalkd使用
- Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
- 超越JAX-RS规范:Apache CXF搜索扩展
- 前端学习(2177):vue-router得参数传递
- java形参改变实参_java方法改变形参后得到实参值是否改变
- iOS之路10-给xib设置约束注意
- JAVA字符串怎么转换成整数
- SQL数据库只读问题
- java string转number_DataBinding的简单使用(java/kotlin)
- 抖音txt表白html,抖音vbs表白代码的技巧分享
- 关于studio 3T
- Java进阶之反射机制
- 数据生产力崛起:新动能+新治理
- 如何把照片压缩到20k一下_如何将照片压缩到20k_手机怎么把照片压缩到20k
- 树莓派上云-天工物接入
- 微信小程序语音转文字demo
- Spire.XLS:一款Excel处理神器(2)
- C++ cctype头文件里的:isalpha、islower、isupper、isalnum、isblank、isspace函数
- 致江苏卫视《最强大脑第二季》节目组的一封信
- springMVC的扩展与接管