Paxos算法的原理和应用

本文深入探讨了Paxos算法的原理与应用,详细解释了提议过程的两个关键阶段,即prepare和accept,并讨论了如何在分布式系统中实现数据一致性。文章还提到了Zookeeper中的Leader选举机制以及Paxos算法的改进版。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Paxos算法原理和应用

Paxos算法莱斯利·兰伯特(英语:Leslie Lamport,LaTeX中的「La」)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。

下面是网上的两篇帖子写的比较容易理解,相比原文中的议会案例,两军问题更为本土话,所以好理解一些。以两军问题为背景来演绎Basic PaxosPaxos算法细节详解(一)--通过现实世界描述算法

学习总结:    

    1、每一次提议过程都有两个阶段(1.prepare 2.accept)两个阶段缺一不可

    2、每一个决策者每次接收到新的提议后,都会拿当前提议的Proposalid与本节点上保存的Proposalid比较,如果新提议的id小于本地保存的id则决策者回复消息就是Rejected和已经保存的提议ID。相反如果大于已经保存的id则保存新的提议ID并回复Proposer提议者Ok。

    3、提议者发送提议的时候是给所有的决策者(Acceptor)发送,在accept阶段则是给有消息回复的acceptor的决策者发送数据信息。

    4、每一个Proposer (提议者)在得不到多数派的回复的时候需要重新发送提议

    5、Proposer 在accept阶段得到多数决策者Acceptor们的回复消息内容不同时则取ProposalId比较大的值作为新的值发送给各个决策者保存。

    6、如果所有的Proposer都收到多数决策者的回复消息则说明各个节点之间的数据已经达到一致了。

       在zookeeper中的Leader选举机制就是使用的paxos算法的进化版,paxos基础算法只是能保证各个节点中的单个数据一致,但是各个节点是无法确定该什么时候提取数据,提取时间过早或者太晚都会导致数据的不一致。所以想要保证完整数据的严格一致性,还需要一次confirm。提示所有节点可以提取数据了,这样就可以实现各个节点数据的严格一致性。

    如果想要让多个数据保持一致性,则可以使用multi-paxos算法来实。

除了paxos的基础算法还有一些改进版的算法,提升了算法的性能和应用范围。下面的这篇的帖子就是对Paxos各个进化版的讲解。基于消息传递解决分布式系统中一致性问题

转载于:https://my.oschina.net/u/3757467/blog/1595658

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值