zookeeper学习笔记之-Paxos算法(一)- Basic Paxos

提到分布式算法,就不得不提 Paxos 算法,在过去几十年里,它基本上是分布式共识的代名词,因为当前最常用的一批共识算法都是基于它改进的。比如,Fast Paxos 算法、Cheap Paxos 算法、Raft 算法等等。而很多同学都会在准确和系统理解 Paxos 算法上踩坑,比如,只知道它可以用来达成共识,但不知道它是如何达成共识的。

 

这其实侧面说明了 Paxos 算法有一定的难度,可分布式算法本身就很复杂,Paxos 算法自然也不会例外,当然了,除了这一点,还跟兰伯特有关。

 

兰伯特提出的 Paxos 算法包含 2 个部分:

  • 一个是 Basic Paxos 算法,描述的是多节点之间如何就某个值(提案 Value)达成共识;
  • 另一个是 Multi-Paxos 思想,描述的是执行多个 Basic Paxos 实例,就一系列值达成共识。

 

可因为兰伯特提到的 Multi-Paxos 思想,缺少代码实现的必要细节(比如怎么选举领导者),所以在理解上比较难。

 

为了让你理解 Paxos 算法,接下来我会用 2 节课的时间,分别以 Basic Paxos 和 Multi-Paxos 为核心,带你了解 Basic Paxos 如何达成共识,以及针对 Basic Paxos 的局限性 Multi-Paxos 又是如何改进的。今天咱们先来聊聊 Basic Paxos。

 

在我看来,Basic Paxos 是 Multi-Paxos 思想的核心,说白了,Multi-Paxos 就是多执行几次 Basic Paxos。所以掌握它之后,你能更好地理解后几讲基于 Multi-Paxos 思想的共识算法(比如 Raft 算法),还能掌握分布式共识算法的最核心内容,当现在的算法不能满足业务需求,进行权衡折中,设计自己的算法。

 

来看一道思考题。

 

假设我们要实现一个分布式集群,这个集群是由节点 A、B、C 组成,提供只读 KV 存储服务。你应该知道,创建只读变量的时候,必须要对它进行赋值,而且这个值后续没办法修改。因此一个节点创建只读变量后就不能再修改它了,所以所有节点必须要先对只读变量的值达成共识,然后所有节点再一起创建这个只读变量。

 

那么,当有多个客户端(比如客户端 1、2)访问这个系统,试图创建同一个只读变量(比如 X),客户端 1 试图创建值为 3 的 X,客户端 2 试图创建值为 7 的 X,这样要如何达成共识,实现各节点上 X 值的一致呢?带着这个问题,我们进入今天的学习。

 

 

在一些经典的算法中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Zookeeper是一个分布式应用程序协调服务,它提供了一个分布式锁、分布式队列等基本的分布式协作功能。而Paxos算法则是分布式系统中的一种经典算法,主要用于保证分布式系统的一致性。Zookeeper基于Paxos算法实现了分布式锁和分布式队列等功能。 Paxos算法主要解决的问题是分布式系统中的一致性问题。在分布式系统中,由于网络通信的延迟、节点宕机等原因,可能会导致数据的不一致性。Paxos算法通过选举一个Leader节点来协调各个节点的操作,从而保证系统的一致性。 Paxos算法主要分为三个阶段:提议、批准和执行。在提议阶段,一个节点向其他节点提议一个值;在批准阶段,如果超过半数节点同意了这个值,那么这个值就被批准了;在执行阶段,Leader节点将这个值发送给所有节点,让它们执行。 Zookeeper在实现分布式锁和分布式队列等功能时,也是基于这个流程实现的。当一个进程需要获取锁时,它会向Zookeeper服务发送一个请求,Zookeeper会选举一个Leader节点来处理这个请求。当一个进程需要使用队列时,它会向Zookeeper服务发送一个请求,Zookeeper会将这个请求放入队列中,并选举一个Leader节点来执行这个请求。 总之,Zookeeper是一个分布式应用程序协调服务,它提供了一些基本的分布式协作功能。而Paxos算法则是保证分布式系统一致性的经典算法,Zookeeper基于Paxos算法实现了分布式锁和分布式队列等功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值