zoukankan      html  css  js  c++  java
  • Paxos算法

    Paxos算法可分为两二段:

    阶段一:

    1.Proposer选择一个提案号Mn,然后向Acceptor的某个超过半数的子集发送编号为Mn的Prepare请求。

    2.如果一个Acceptor收到一个提案编号为Mn的Prepare请求,且Mn大于该Acceptor已响应过的所有编号,那么它会将它已经批准过的最大的编号提案相应给Proposer,同时承诺不会再批准任何编号小于Mn的提案。

    阶段二:

    1.如果Proposer收到来自半数以上的Acceptor对其发出的编号为Mn的Prepare请求的相应,那么它就会发送一个[Mn,Vn]提案的请求给Acceptor,Vn是一阶段中响应的最大编号的提案值,如果响应中不包含任何提案值,那么他就是任意值。

    2.如果Acceptor收到[Mn,Vn]的提案请求,只要该Acceptor尚未对编号大于Mn的请求做出响应,他就可以通过这个提案。

    提案的获取Acceptor将批准的提案发送给一个特定的Learner集合,该集合中的每个Learner都可以在一个提案被选定后通知所有其他的Learner。

    通过选取主Proposer保证算法的活性:

    如果两个Proposer交替向Acceptor发送Prepare请求,那么每次Acceptor都收到更大的Mn(Mn+1),就会在二阶段忽略上一个Proposer发送的[Mn,Vn]提案。这样交替忽略就是死循环,不会通过提案。

    解决办法是选出一个主Proposer,只有主Proposer可以发出提案。

  • 相关阅读:
    Hadoop是什么
    Hadoop的安装模式
    hadoop和云计算的关系
    no server suitable for synchronization found的解决办法
    hadoop的产生背景、发展历程
    Hadoop生态系统
    学习路线
    日历+时钟
    新世界(未完善)
    简单的点击切换图
  • 原文地址:https://www.cnblogs.com/tomasman/p/8445902.html
Copyright © 2011-2022 走看看