zookeeper学习特别篇三:zookeeper一致性协议--paxos算法

paxos算法

Paxos 算法是 Leslie Lamport 1990年提出的一种一致性算法,该算法是一种提高分布式系统容错性的一 致性算法,解决了 3PC 中网络分区的问题, paxos算法可以在节点失效、网络分区、网络延迟等各种异 常情况下保证所有节点都处于同一状态,同时 paxos 算法引入了 过半 理念,即少数服从多数原则。
  • paxos有三个版本:
      Basic Paxos
      Multi Paxos
      Fast Paxos
  • paxos算法的四种角色

paxos的四种角色分别具有三种不同行为,但是多数情况下,一个进程可能充当多种角色

  1. client:系统外部角色,请求发起者,不参与决策
  2. proposer:提案提议者
  3. acceptor:提案的表决者,即是否accept该提案,只有超过半数以上的acceptor接受了提案,该 提案才被认为被选定
  4. learners:提案的学习者,当提案被选定后,其同步执行提案,不参与决策
Paxos 算法分为两个阶段: prepare 阶段、 accept 阶段
  • prepare阶段
<1> proposer 提出一个提案,编号为 N, 发送给所有的 acceptor
<2> 每个表决者都保存自己的 accept 的最大提案编号 maxN ,当表决者收到 prepare(N) 请求时,会
比较 N maxN 的值,若 N 小于 maxN, 则提案已过时,拒绝 prepare(N) 请求。若 N 大于等于 maxN
则接受提案,并将该表决者曾经接受过的编号最大的提案 Proposal(myid,maxN,value) 反馈给提议
者:其中 myid 表示表决者 acceptor 的标识 id maxN 表示接受过的最大提案编号 maxN value
示提案内容。若当前表决者未曾 accept 任何提议,会将 proposal(myid,null,null) 反馈给提议者。
  • accept阶段
<1> 提议者 proposal 发出 prepare(N), 若收到超过半数表决者 acceptor 的反馈, proposal 将真正的
提案内容 proposal(N,value) 发送给所有表决者。
<2> 表决者 acceptor 接受提议者发送的 proposal(N,value) 提案后,会将自己曾经 accept 过的最大
提案编号 maxN 和反馈过的 prepare 的最大编号,若 N 大于这两个编号,则当前表决者 accept 该提
案,并反馈给提议者。否则拒绝该提议。
<3> 若提议者没有收到半数以上的表决者 accept 反馈,则重新进入 prepare 阶段,递增提案编号,
重新提出 prepare 请求。若收到半数以上的 accept ,则其他未向提议者反馈的表决者称为
learner ,主动同步提议者的提案。
 
正常流程
 
单点故障,部分节点失败

proposer失败

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值