【Hadoop】什么是Zookeeper?如何理解Zookeeper?

发布于:2025-03-09 ⋅ 阅读:(17) ⋅ 点赞:(0)

ZooKeeper 是一个开源的分布式应用程序协调服务,可以为分布式应用提供一致性的服务,功能 包括:配置维护、名字服务、分布式同步、组服务等等。ZooKeeper 的目标是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

1.Zookeeper的特点

  • 最终一致性:Client 不论连接到哪个 Server, 展示给它的都是同一个视图。
  • 可靠性:如果某个消息被一台服务器接受,那么它将被集群中所有的服务器接受。
  • 实时性:Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新或者服务器失效的信息。
  • 等待无关(wait-free):慢的或者失效的Client不得干预速的Client的请求。
  • 原子性:更新只能成功或者失败,没有中间状态。
  • 顺序性:所有server,同一消息发布顺序一致。

2. ZooKeeper 的架构

ZooKeeper 采用主从架构,主要包括以下组件:

(1)客户端:与 ZooKeeper 集群交互的应用程序。

(2)服务器集群:集群由多个服务器节点组成,每个服务器节点可以是以下角色之一:

  • Leader:负责处理写请求和事务操作。
  • Follower:处理读请求,并参与 Leader 选举和写请求的确认。
  • Observer:扩展 ZooKeeper 集群的读能力,不参与写请求的确认和 Leader 选举。

3.如何理解Zookeeper

ZooKeeper 就像是一个分布式的“公告板”,所有的客户端都可以在这个公告板上发布信息、读取信息,并且能够实时监控信息的变化。

  • 客户端:看公告板的人,可以进行贴,读,撕,监控便签。
  • 服务器集群:管理公告板的人们。Leader:负责处理写操作(比如贴便签、撕便签)。Follower:负责处理读操作,并协助 Leader 管理公告板。Observer:只负责处理读操作,不参与写操作的管理。

工作流程:公告板的运作

(1)写操作(贴便签)

  1. 你(客户端)想贴一张便签,于是告诉管理公告板的人(ZooKeeper 服务器)。
  2. 如果管理公告板的人是 Follower,他会把这件事告诉 Leader。
  3. Leader 会召集所有管理公告板的人开会,讨论是否同意贴这张便签。
  4. 如果大多数人同意,Leader 就会把便签贴在公告板上,并通知你贴好了。

(2)读操作(看便签)

  1. 你(客户端)想看看公告板上的某张便签,于是随便找一个管理公告板的人(ZooKeeper 服务器)。
  2. 管理公告板的人直接从公告板上找到便签,并把内容告诉你。

(3)监控便签(实时通知)

  1. 你(客户端)对某张便签感兴趣,于是告诉管理公告板的人:“如果有人动了这张便签,请立刻通知我。”
  2. 如果有人修改了便签内容,管理公告板的人会立刻通知你。

四.应用场景:公告板的用途

  • 分布式锁:比如你想独占某个资源,可以在公告板上贴一张“临时便签”,其他人看到这张便签就知道资源被占用了。
  • 配置管理:比如你想让所有客户端都知道某个配置信息,可以在公告板上贴一张“持久便签”,大家随时都能看到。
  • 集群管理:比如你想知道哪些服务器还在工作,可以让每台服务器在公告板上贴一张“临时便签”,如果某台服务器掉线了,便签会自动消失。