paxos协议

看了《从paxos到zookeeper》里面paxos协议的讲解,推导过程太复杂。记录一下paxos协议的内容

协议用于分布式数据一致性,分为三种角色,proposer、acceptor、learner。proposer向accepor集合提出议案[Mn, Vn], accepor批准议案,即确定那个议案为最终结果,learner主要同步结果, 类似master - slave中的slave

两个阶段:

阶段一:

  1. proposer提出议案[Mn, Vn],发送给prepare大部分的accepor节点

  2. acceptor节点收到prepare请求,承诺不批准比Mn更小的提案。如果批准其他提案Vx,返回Vx

阶段二:

  1. proposer收到大部分acceptor响应,发送accept请求。如果没有Vx返回,发送[Mn, Vx]给acceptor。如果有Vx返回,发送[Mn, Vn]

  2. acceptor收到accept请求,批准提案[Mn, Vn]或者[Mn, Vx]

备注,为了避免死循环可以使用主proposer给acceptor发送提案

learner同步提案

方式一:

  所有的acceptor m个给learner n个发送提案, 网络通信次数m * n

方式二:

  所有的acceptor给主learner发送提案, 主learn同步给其他learner, m + n - 1(单点故障)

方式三:

  所有acceptor m给一个learner x集合同步提案, 集合learner在给剩余learn同步 m * x + x * (n - x) = x * ( m + n - x)

原文地址:https://www.cnblogs.com/luckygxf/p/9939938.html