什么是Paxos算法?Paxos算法是区块链核心算法之一

Paxos算法解决的问题是在一个可能发生消息可能会延迟、丢失、重复的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。

一个典型的场景是,在一个分布式数据库系统中,如果各节点的初始状态一致,每个节点都执行相同的操作序列,那么他们最后能得到一个一致的状态。为保证每个节点执行相同的命令序列,需要在每一条指令上执行一个“一致性算法”以保证每个节点看到的指令一致。

一个通用的一致性算法可以应用在许多场景中,是分布式计算中的重要问题。 节点通信存在两种模型:共享内存和消息传递。Paxos算法就是一种基于消息传递模型的一致性算法。

 

分析Paxos算法的目的

Paxos算法的目的是为了解决分布式环境下一致性的问题。多个节点并发操纵数据,如何保证在读写过程中数据的一致性,并且解决方案要能适应分布式环境下的不可靠性(系统如何就一个值达到统一)。

 

Paxos算法中,可分为4种角色:

  1. Proposer:提议发起者,处理客户端请求,将客户端的请求发送到集群中,以便决定这个值是否可以被批准。
  2. Acceptor:提议批准者,负责处理接收到的提议,他们的回复就是一次投票。会存储一些状态来决定是否接收一个值。
  3. Client:产生议题者,Proposer就像Client的使者,由Proposer使者拿着Client的议题去向Acceptor提议,让Acceptor来决策。
  4. Learner:最终决策学习者,最终学习的目标是Acceptor们最终接受了什么议题?

 

Paxos算法的原理

例如:公司商定年会举办的地点,每个人都可以提出建议。在现实环境中我们可以在一个会议室共同讨论或在微信群中讨论(基于内存共享方式);但在基于消息传递的分布式环境中每个人只能通过手机短信与其它人通过。如何在这种会延迟、丢失的环境中确定一个年会举办地点。

 

Paxos算法是这样解决这个问题:

每个人都可以提出建议、同意建议、接受建议

少数服从多数。只要建议被多数人同意即可确定该建议。

 

于是确定以下讨论方式:

  1. 只有被提出来的建议才能被大家同意。
  2. 最终只能确定一个建议。
  3. 如果某个人认为大家同意了某 个建议,那么这个建议必须真的是被大家同意的。

 

Paxos算法图解

 

在实现环境中会通过一次提议,选择一个Leader。后续所有的提议都只能由Leader提出。

原来paxos算法里的角色都是这样的不靠谱,不过没关系,结果靠谱就可以了。该算法就是为了追求结果的一致性。

 

延伸阅读:ERC-223、ERC-621、ERC-721这些到底说了啥

免责声明:信息仅供参考,不构成投资及交易建议。投资者据此操作,风险自担。
如果觉得文章对你有用,请随意赞赏收藏
李淑儿 小偷哇 2人赞赏收藏
相关推荐
相关下载
登录后评论
最新评论 (3)
Copyright © 2019 宽客在线