一致性算法Paxos解决了什么问题

发布时间:2021-12-31 09:19:51 作者:iii
来源:亿速云 阅读:398

这篇文章主要讲解了“一致性算法Paxos解决了什么问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“一致性算法Paxos解决了什么问题”吧!

一:一致性算法Paxos

Paxos算法是基于消息传递且具有高度容错特性的一致性算法,是目前公认的解决分布式一致性问题最有效的算法之一。

1.1 Paxos解决了什么问题

在常见的分布式系统中,总会发生诸如通信异常、节点故障、网络分区等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。

注意:这里某个数据的值并不只是狭义上的某个数,它可以是一条日志,也可以是一条命令(command)。根据应用场景不同,某个数据的值有不同的含义。

1.2 Paxos的相关概念

提案 (Proposal):Proposal信息包括提案编号 (Proposal ID) 和提案的值 (Value)

在Paxos算法中,有三种角色):

1.4 Proposer生成提案规则

Proposer生成提案之前,应该先去『学习』已经被选定或者可能被选定的value,然后以该value作为自己提出的提案的value如果没有value被选定,Proposer才可以自己决定value的值。这样才能达成一致。这个学习的阶段是通过一个『Prepare请求』实现的。

下图为多数Acceptor集合(半数以上)没有接收提案的情况:
一致性算法Paxos解决了什么问题

Proposer提案生成算法:

我们将该请求称为编号为N的Prepare请求。

我们称该请求为Accept请求。(注意:此时接受Accept请求的Acceptor集合不一定是之前响应Prepare请求的Acceptor集合)

1.5 Acceptor接收提案规则

一个Acceptor可能会收到来自Proposer的两种请求,分别是Prepare请求和Accept请求,对这两类请求作出响应的条件分别如下:

因此,对Acceptor接受提案给出如下约束:

p1a:一个Acceptor只要尚未响应过任何编号大于N的Prepare请求,那么他就可以接受这个编号为N的提案。

Acceptor算法优化

由上面可知,如果Acceptor收到一个编号为N的Prepare请求,在此之前它已经响应过编号大于N的Prepare请求。根据P1a,该 Acceptor不可能接受编号为N的提案。因此,该Acceptor可以忽略编号为N的Prepare请求。

通过这个优化,每个Acceptor只需要记住它已经批准的提案的最大编号以及它已经做出Prepare请求响应的提案的最大编号就行了

1.6 Paxos算法描述

一致性算法Paxos解决了什么问题

阶段一:

阶段二:

1.7 Learner学习被选定的value

三种方式:
一致性算法Paxos解决了什么问题

1.8 如何保证Paxos算法的活性

假设存在这样一种极端情况,有两个Proposer依次提出了一系列编号递增的提案,导致最终陷入死循环,没有value被选定,具体流程如下:
一致性算法Paxos解决了什么问题

解决:通过选取主Proposer,并规定只有主Proposer才能提出议案。这样一来只要主Proposer和过半的Acceptor能够正常进行网络通信,那么但凡主Proposer提出一个编号更高的提案,该提案终将会被批准,这样通过选择一个主Proposer,整套Paxos算法就能够保持活性。

感谢各位的阅读,以上就是“一致性算法Paxos解决了什么问题”的内容了,经过本文的学习后,相信大家对一致性算法Paxos解决了什么问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. 分布式一致性算法Paxos
  2. Paxos算法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

paxos

上一篇:如何分析SAP Netweaver和Cloud Foundry上的运行时进程

下一篇:SAP不同的产品是怎样支持用户创建自定义字段的

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》