区块链之Paxos算法解析

Paxos介绍

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

  • 在常见的分布式系统中,总会发生诸如机器宕机或网络异常(包括消息的延迟、丢失、重复、乱序,还有网络分区)等情况。Paxos算法需要解决的问题就是如何在一个可能发生上述异常的分布式系统中,快速且正确地在集群内部对某个数据的值达成一致,并且保证不论发生以上任何异常,都不会破坏整个系统的一致性。

  • 简单的理解,在分布式系统中,即使出现网络异常以及节点出现机器死机的异常,利用Paxos算法可以保证每个节点整个系统中节点状态的一致性

Paxos过程

    客户端(提案者)                                服务器(接收者)
    
    初始化---------------------------------------------------------
    
    c   --等待执行的命令                             Tmax --当前已发布的最大票号
    t=0 --当前尝试的票号
                                                 C --当前存储的命令
                                                 Tstore = 0 --用来存储命令C的票
   阶段1------------------------------------------------------------ 主要是尝试从服务器获取提案的票号,客户端有了有效的提案票号,其提案才可能被服务器接受
   
   1 t=t+1 
   2 向所有服务器发送消息,请求得到编号为t的票
    
                                                3 if t > Tmax --服务器还没有发过票号t
                                                4 Tmax = t --更新Tmax
                                                5 回复:ok(Tstore,C) --回复给客户端当前已发布的最大票号和已存储的命令
                                                6 end if
  
   阶段2-------------------------------------------------------------服务器会存储所有客户端的有效票号t,并返回其已经存储的提案(Tstore,C).客户端会使用票号t发起提案
       -------------------------------------------------------------每个客户端提案的内容c,主要由服务器端是否接受过提案C决定.如果存在服务器已经接受内容为C的提案,则
       -------------------------------------------------------------客户端只能使用票号t发布内容为C的提案
   
  
  7 if 过半数服务器回复ok then
  8 选择Tstore值最大的(Tstore,C)
  9 if Tstore > 0 then -- 如果Tstroe > 0 ,则说明至少有一个服务器接收到了票号为Tstore,命令为c的提案,此时客户端即为一个学习者,他的提案命令必须也是c
  10 c=C
  11 end if -- 如果Tstroe =< 0,此时客户端可以自己决定其提案命令c
  
  12   向这些回复了ok的服务器发送消息propose(t,c) --一个内容为(t,c)的提案
  13 end if
  
                                                 14 if t=Tmax then -- 票号如果有效,则服务器会存储该提案
                                                 15 C = c
                                                 16 Tstore = t
                                                 17 回复success
                                                 18 end if
                                                 
  阶段3---------------------------------------------------------------对提案内容的执行
  
  19 if 过半数服务器回复success then -- 如果一个提案被存储在过半数的服务器上,则该提案被选择
  20 向每个服务器发送消息execute(c)。--执行提案
  21 end if

Paxos 算法的推理

如果想具体理解Paxos的具体工作过程,可以阅读和参考下面两篇文章:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值