Apache ZooKeeper 简介

Apache ZooKeeper 简介

Apache ZooKeeper 是一个开源的分布式协调服务,由 Apache 软件基金会开发。它主要用于解决分布式系统中常见的数据一致性和协调问题,为上层应用提供简单、高效、可靠的协调能力。

核心概念

ZooKeeper 的数据模型类似于文件系统的树形结构,树中的每个节点称为 ZNode。每个 ZNode 既可以存储少量数据(通常为 KB 级别),也可以拥有子节点。ZNode 有几种类型:

  • 持久节点:创建后一直存在,直到显式删除。
  • 临时节点:与客户端会话绑定,会话结束节点自动删除。
  • 顺序节点:名称自动附加一个单调递增的序号。

主要特性

  • 高可用性:通过集群模式(通常为奇数台服务器)和 Zab(ZooKeeper Atomic Broadcast)一致性协议,保证服务的高可用和数据一致性。
  • 顺序一致性:来自客户端的更新请求会按顺序应用,保证全局有序。
  • 原子性:更新操作要么成功要么失败,不会出现部分成功。
  • 可靠性:一旦更新被应用,就会持久化保存,直到被覆盖。
  • 实时性:ZooKeeper 保证在一定时间内,客户端能够读取到最新的数据(最终一致性)。
  • 监听机制:客户端可以监听 ZNode 的变化(如数据变更、子节点变化),一旦变化发生,服务端会主动通知客户端,从而实现事件的实时响应。

常见应用场景

  • 配置中心:将配置信息存储在 ZooKeeper 节点上,客户端监听配置变化,实现动态配置更新。
  • 命名服务:类似 DNS,为分布式系统中的服务或资源提供唯一名称标识。
  • 分布式锁:利用临时顺序节点,实现分布式环境下的互斥锁。
  • 集群管理:监控集群中节点的存活状态,进行故障检测和自动切换(如 Master 选举)。
  • 分布式队列:通过顺序节点实现 FIFO 队列或 Barrier 等同步机制。

架构简介

ZooKeeper 集群由多个 Server 组成,其中一个节点通过选举成为 Leader,负责处理所有写请求,并将变更广播给 Follower;其他节点为 Follower 或 Observer(不参与选举,只处理读请求)。客户端可以连接任意节点进行读写操作,读操作可由任意节点直接响应,写操作则转发给 Leader 处理。

使用场景示例

  • Hadoop:用于管理 NameNode 的高可用和 ResourceManager 的状态。
  • Kafka:用于管理 Broker 和 Consumer 的元数据,以及进行 Leader 选举。
  • Dubbo:作为注册中心,管理服务的提供者和消费者。

总的来说,ZooKeeper 为分布式系统提供了基础协调能力,让开发者可以更专注于业务逻辑,而不用重复实现复杂的分布式一致性机制。

相关推荐
鸿乃江边鸟10 小时前
Spark中怎么做Spark canonicalize归一化
大数据·分布式·spark
SLD_Allen10 小时前
Kafka分区与消费者的关系kafka分区和消费者线程的关系
分布式·kafka
he___H10 小时前
数据密集型应用系统设计--其一
分布式
珠***格12 小时前
Ⅱ型边缘网关|易部署、易扩容、易改造
大数据·人工智能·分布式·能源·边缘计算
无心水12 小时前
17、本地多模态|Qwen-VL离线私有化提取敏感PDF完全指南
人工智能·分布式·架构·openclaw·hermes
Solis程序员14 小时前
分布式 SingleFlight:从单机请求合并到集群级远程调用去重
分布式
填满你的记忆15 小时前
Kafka 面试题 Top40
分布式·kafka
oqX0Cazj215 小时前
Go-Zero数据库事务实战:本地事务+失败自动回滚+生产避坑+简单分布式事务方案
数据库·分布式·golang
团象科技15 小时前
出海技术团队分布式落地调研 海外云团队协作开发实操记录
分布式
段一凡-华北理工大学15 小时前
工业领域的Hadoop架构学习~系列文章22:Hadoop生态展望 - 面向未来的技术演进
大数据·人工智能·hadoop·分布式·学习·架构·高炉炼铁