深入浅出理解Paxos算法
Paxos算法是莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的「La」)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。
Paxos算法一开始非常难以理解,但是一旦理解其实也并不难,之所以难理解其实是因为作者讲的故事难理解。
Paxos算法维基百科https://en.wikipedia.org/wiki/Paxos_(computer_science)
网上有2篇帖子是讲的非常好的,
分别是:以两军问题为背景来演绎Basic Paxos和Paxos算法细节详解(一)--通过现实世界描述算法
本人是在看了这2个帖子之后再结合原论文才看懂的。
Paxos一共4个角色:Client Proposer Acceptor Learner。
Client:产生议题者
Proposer :提议者
Acceptor:决策者
Learner:最终决策学习者,也就是执行者。
Proposer拿着Client的议题去向Acceptor提议,让Acceptor来决策。
Proposer提出议题,Acceptor初步接受或者Acceptor初步不接受。
Acceptor初步接受则Proposer再次向Acceptor确认是否最终接受。
Acceptor最终接受或者Acceptor最终不接受。
Learner最终学习的目标是向所有Acceptor学习,如果有多数派个Acceptor最终接受了某提议,那就得到了最终的结果,算法的目的就达到了。
最基本的Message flow: Basic Paxos演示图如下图所示,其他情况可以参考百科。
图解:
A1,,A2和A3就是Acceptor。
P1,p2和p3就是Proposer。浅色的P1和P2说明是进行提议,深色的P1和P2说明是拿到表决。
圆圈123表明是每次提议序号,递增即可。黑色的图表示被黑了,也就是否决。方块表示投票结果,绿方块表示投票通过,红色菱形表示最终的投票结果。
整个事件是按照时间线从左到右发展。
事件发展:
第一个框代表第一阶段--提议
1.p2最先找到A2,P2提议序号是2,A2记录下,因为之前没有其他的序号所以成功了,然后返回标志给p2;
2.p1找到A1,P1提议序号是1,A1记录下,因为之前没有其他的序号所以成功了,然后返回标志给p1;
3.p1找到A3,P1提议序号是1,A3记录下,因为之前没有其他的序号所以成功了,然后返回标志给p1;
问题来了
4.p1找到A2,P1提议序号是1,A2已经记录下提议序号2,2>1,所以不成功;
5.p2找到A1,P2提议序号是2,A1已经记录下提议序号1,1>2,所以成功;,然后返回标志给p2;
6.p2找到A3,P2提议序号是2,A3已经记录下提议序号1,1>2,所以成功;,然后返回标志给p2;
第二个框代表第二阶段--确认提议(投票)
7.p1找到A1,P1确认序号是1,A1已经记录下提议序号2,1<2,所以不确认,然后p1继续提议序号是3,周而复始...;
8.p2找到A2,P2确认序号是2,A2已经记录下提议序号2,2=2,所以确认成功;,然后返回投票标志给p2;
9.p2找到A3,P2确认序号是2,A3已经记录下提议序号2,2=2,所以确认成功;,然后返回投票标志给p2;
10.p2找到A1,P2确认序号是2,A1已经记录下提议序号3,2<3,所以不确认,;然后p2继续提议序号是4,周而复始...;
问题来了
11.p1找到A2,P1确认序号是1,A1已经记录下确认序号2,1<2,所以不确认,然后返回确认序号2;
12.p1找到A3,P1确认序号是1,A3已经记录下确认序号2,1<2,所以不确认,然后返回确认序号2;
13.p1和p2都得到确认也就是投票结果是2。
14.所有的Learner最终学习的目标是2。
Paxos过程结束了,这样,一致性得到了保证,算法运行到最后所有的proposer都投“2”所有的acceptor都接受这个议题,也就是说在最初的第二阶段,议题是先入为主的,谁先占了先机,后面的proposer在第一阶段就会学习到这个议题而修改自己本身的议题,才能让一致性得到保证,这就是paxos算法的一个过程。该算法就是为了追求结果的一致性。
深入浅出理解Paxos算法相关推荐
- 通俗理解Paxos算法
维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性 ...
- 一步一步理解Paxos算法
一步一步理解Paxos算法 作者:jw (360电商技术组) 背景 Paxos算法是Lamport于1990年提出的一种基于消息传递的一致性算法.由于算法难以理解起初并没有引起人们的重视,使Lampo ...
- 如何透彻理解 Paxos 算法?
我们主要讲解"如何透彻理解 Paxos 算法"? 文章目录 Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Pr ...
- 深入浅出理解FFT算法。通俗易懂,xilinxIP核仿真
深入浅出理解FFT算法,通俗易懂,用xilinxIP核心仿真 1.前言:傅里叶变换:时域到频域的转换 FS连续时间周期傅里叶级数->DFS离散傅里叶级数->FT连续时间非周期信号的傅里叶变 ...
- 03 如何透彻理解 Paxos 算法?
文章目录 03 如何透彻理解 Paxos 算法? Quorum 机制 Quorum 定义 Quorum 的应用 Paxos 节点的角色和交互 Paxos 的节点角色 Proposer 提案者 Acce ...
- 理解paxos算法--事前咨询,事中决定,事后提交
要点: (1)Paxos算法描述的过程发生在"一次选举"的过程中,一次选举包括多轮的提案(proposal)提交,批准,决议的过程 (2)一个proposal(提案)包含该提案的唯 ...
- 分布式系列文章——Paxos算法原理与推导
Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...
- 区块链共识之Paxos算法理解与实战
0.前言 本文记录笔者学习和理解区块链共识算法Paxos的点滴,文章比较长,需要耐心来细细琢磨,笔者也是苦战了一个周末才对此有那么一点初步了解,有问题的地方请不吝斧正! 1.初始是阅读本文后续内容的基 ...
- Basic Paxos算法
Basic Paxos算法 背景 Paxos算法是Lamport于1990年提出的一种基于消息传递的一致性算法.由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后重新发表到TOCS上. ...
最新文章
- 微信小程序提示 出现脚本错误或者未正确调用 Page()
- php各种api接口,PHPSAPI接口
- LeetCode Ransom Note(字符串)
- 程序员的修养--读书笔记
- vue中进度条写法_vue组件实现进度条效果
- SVNserver搭建和使用(二)
- 海康+萤石云+云存储多少钱一个月_400万极清画质 萤石C6Wi智能家居摄像机
- python函数进阶小结_python之函数进阶
- 线上python课程一般多少钱-排名前十的python零基础编程在线网课一对一费用多少钱...
- nyoj------20吝啬的国度
- win10下装黑苹果双系统_黑苹果macOS10.15.4单硬盘三系统安装教程
- MATLAB角度转换
- FPGA视频处理系统
- 15种手机游戏引擎和开发工具介绍
- Koo叔说Shader-CG语言介绍
- Excel中快速删除换行
- GIS地理信息定位系统
- springboot接口接参注解详解 controller @Valid
- zoho邮箱收信服务器,配置邮件交付 - Zoho Mail 设置
- FRM-91500: Unable to start/complete the build.
热门文章
- 输入引脚时钟约束_Happy Design in Vivado 系列:时序分析入门三板斧(一):创建时钟...
- 基于熵权法优劣解距离法_基于优劣解距离法的火电机组单辅机运行状态评估
- java 初始化系统参数_系统中参数的初始化 参数在系统中配置
- 使用Python,OpenCV加载图像并将其显示在屏幕上?
- Linux那些事儿 之 戏说USB(26)设备的生命线(九)
- 【深度学习】(7) 交叉验证、正则化,自定义网络案例:图片分类,附python完整代码
- 【ios开发/Xcode】使用UITableView完成学生信息及成绩的显示
- 业务逻辑组件化android,AppJoint 极简 Android 组件化方案
- 机器学习与高维信息检索 - Note 6 - 核, 核方法与核函数(Kernels and the Kernel Trick)
- Udacity机器人软件工程师课程笔记(三)-样本搜索和找回-基于漫游者号模拟器-使用moviepy输出测试视频