图解 Paxos 一致性协议
http://blog.jobbole.com/106327/
前言
Paxos 一致性协议可以说是一致性协议研究的起点,也以难以理解闻名。其实协议本身并没有多难理解,它的难理解性主要体现在:为何如此设计协议以及如何证明其正确性。本文尝试通过流程图来说明协议的内容以及基本应用过程,不涉及如何证明其正确性。
基本概念
Paxos 可以分为两种:
- Single-Decree Paxos:决策单个 Value
- Multi-Paxos:连续决策多个 Value,并且保证每个节点上的顺序完全一致,多 Paxos 往往是同事运行多个单 Paxos 协议共同执行的结果。
本文只关注单 Paxos 的原理,理解了单 Paxos,多 Paxos 也就不难理解了。
Paxos 协议中的三种角色
- 倡议者(Proposer):倡议者可以提出提议(数值或者操作命令)以供投票表决
- 接受者(Acceptor):接受者可以对倡议者提出的提议进行投票表决,提议有超半数的接受者投票即被选中
- 学习者(Learner):学习者无投票权,只是从接受者那里获知哪个提议被选中
在协议中,每个节点可以同时扮演以上多个角色。
Paxos 的特点
- 一个或多个节点可以提出提议
- 系统必须针对所有提案中的某个提案达成一致(超过半数的接受者选中)
- 最多只能对一个确定的提议达成一致
- 只要超半数的节点存活且可互相通信,整个系统一定能达成一致状态,即选择一个确定的提议
协议图示
通过上面的流程,如果有多个节点同时提出各自的提议,Paxos 就可以保证从中选出一个唯一确定的值,保证分布式系统的一致性。
实例
下面我们通过例子来理解 Paxos 的实际应用过程。
假设现在有五个节点的分布式系统,此时 A 节点打算提议 X 值,E 节点打算提议 Y 值,其他节点没有提议。
假设现在 A 节点广播它的提议(也会发送给自己),由于网络延迟的原因,只有 A,B,C 节点收到了。注意即使 A,E 节点的提议同时到达某个节点,它也必然有个先后处理的顺序,这里的“同时”不是真正意义上的“同时”。
A,B,C接收提议之后,由于这是第一个它们接收到的提议,acceptedProposal 和 acceptedValue 都为空。
由于 A 节点已经收到超半数的节点响应,且返回的 acceptedValue 都为空,也就是说它可以用 X 作为提议的值来发生 Accept 请求,A,B,C接收到请求之后,将 acceptedValue 更新为 X。
A,B,C 会发生 minProposal 给 A,A 检查发现没有大于 1 的 minProposal 出现,此时 X 已经被选中。等等,我们是不是忘了D,E节点?它们的 acceptedValue 并不是 X,系统还处于不一致状态。至此,Paxos 过程还没有结束,我们继续看。
此时 E 节点选择 Proposal ID 为 2 发送 Prepare 请求,结果就和上面不一样了,因为 C 节点已经接受了 A 节点的提议,它不会三心二意,所以就告诉 E 节点它的选择,E 节点也很绅士,既然 C 选择了 A 的提议,那我也选它吧。于是,E 发起 Accept 请求,使用 X 作为提议值,至此,整个分布式系统达成了一致,大家都选择了 X。
上面是 Paxos 的一个简单应用过程,其他复杂的场景也可以根据流程图慢慢推导,这里只是抛砖引玉。
图解 Paxos 一致性协议相关推荐
- 图解分布式一致性协议 Paxos 算法【BAT 面试题宝库附详尽答案解析】
0. 问题场景 1.Paxos 简介 Paxos is a family of protocols for solving consensus in a network of unreliable p ...
- 图解:一致性协议算法
点击上方 蓝字 关注我们! 2021 最新 Java 编程资料免费领! 来源:网络 背景 CAP 定理 Base 理论 2PC 3PC Paxos算法 Raft一致性算法 一致性协议之 ZAB NWR ...
- 图解分布式一致性协议Paxos
Paxos协议/算法是分布式系统中比较重要的协议,它有多重要呢? <分布式系统的事务处理>: Google Chubby的作者Mike Burrows说过这个世界上只有一种一致性算法,那就 ...
- Paxos一致性协议
Paxos问题指分布式系统中存在故障fault,但不存在恶意corrupt节点场景(消息可能丢失但不会造假)下的共识达成(Consensus)问题. Paxos是第一个被证明的共识算法,原理基于两阶段 ...
- Zookeeper Paxos算法 一致性协议
前言 Paxos 一致性协议可以说是一致性协议研究的起点,也以难以理解闻名.其实协议本身并没有多难理解,它的难理解性主要体现在:为何如此设计协议以及如何证明其正确性.本文尝试通过流程图来说明协议的内容 ...
- Paxos分布式一致性协议
为什么80%的码农都做不了架构师?>>> 源码:https://bitbucket.org/sciascid/libpaxos/src 1 前言 分布式系统中的节点通信存在 ...
- 跟着微信后台团队学习分布式一致性协议
目录 什么是Paxos 一致性协议 分布式环境 提议者 Paxos是用来干什么的 确定一个值 确定多个值 有序的确定多个值 实例的对齐(Learn) 如何应用Paxos 状态机 工程化 我们需要多个角 ...
- 分布式一致性协议Raft(一)
铺垫 一个设计良好的分布式系统,应具备四大特点: 并行性能(parallel performance):任务能均衡高效地在多台机器上执行,无需过高的通讯和锁消耗. 容错性(fault-toleranc ...
- 架构成长之路 | 图解分布式共识算法Paxos议会协议
作者:码途 阿里云智能-全球技术服务部 在系列的前一篇文章中,阐述了 Paxos 的单法令教会协议,也在文章的总结中提到了教会协议只是作为 Paxos 最核心的共识算法,并不具备实际的单独应用场景 ...
最新文章
- Linux System Programming --Chapter Four
- 《C++ Primer》7.3.4节练习
- java获取panel面板画笔_java - paintComponent()与paint()和JPanel vs Canvas在画笔类型的GUI中 - 堆栈内存溢出...
- 【python】使用枚举类
- 现在有很多年轻人都不想打工
- 实验2-4-6 求幂之和 (C语言)
- B - I Hate It(单点更新)(区间求最大值)
- WIn10桌面美化(一)Rainmeter的使用
- gps高斯utm_高斯投影与UTM的异同
- 单片机c语言中的精确延时程序,单片机精确毫秒延时函数
- 西门子、施耐德、罗克韦尔等巨头告诉你,为何你大爷始终是你大爷
- [全国十大城市火车票售票点、订票电话(买票再也不用去火车站排队)] – [旅游] – [校内论坛]
- Unity刚体穿过条件,模仿《GRIS》楼梯效果,可从下方穿过
- java:文本域的简单使用
- 手机流量怎么修改dns服务器,手机上网速度慢怎么办?手动修改DNS为上网提速
- 将矩阵的行列互换得到的新矩阵称为转置矩阵
- 实战游戏项目管理1-规划篇
- Go语言教程第十六集 GORM详解
- 免费的视频压缩软件,踩了好多坑之后,终于找到了——Handbrake
- 给ofo共享单车撸一个微信小程序