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

Paxos算法由Leslie Lamport于1990年提出,用于解决分布式系统中的一致性问题,确保在网络分区、节点失效等异常情况下,所有节点保持一致状态。算法包括Prepare和Accept两个阶段,通过过半原则实现少数服从多数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)请求时,会
比较NmaxN的值,若N小于maxN,则提案已过时,拒绝prepare(N)请求。若N大于等于maxN
则接受提案,并将该表决者曾经接受过的编号最大的提案Proposal(myid,maxN,value)反馈给提议
者:其中myid表示表决者acceptor的标识idmaxN表示接受过的最大提案编号maxNvalue
示提案内容。若当前表决者未曾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失败

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值