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 为分布式系统提供了基础协调能力,让开发者可以更专注于业务逻辑,而不用重复实现复杂的分布式一致性机制。

相关推荐
吴声子夜歌13 小时前
ApacheCommons——commons-exec(外部进程与系统命令安全执行)
java·安全·apache
qetfw15 小时前
Debian 部署 phpMyAdmin:Apache、PHP 与 MariaDB 管理界面配置
linux·debian·php·apache
吴声子夜歌16 小时前
ApacheCommons——commons-compress(解压缩工具)
java·apache
fastjson_18 小时前
Spark 安装和使用
大数据·分布式·spark
spter。19 小时前
从一次关注到最终一致:Canal、Outbox 与 Kafka 如何解决关系链双写问题
分布式·kafka
吴声子夜歌19 小时前
ApacheCommons——commons-math3(科学计算与线性代数)(一)
java·线性代数·算法·apache
MC丶科19 小时前
软考架构师90天冲刺|DAY38·第二阶段综合测试-分布式与云原生
分布式·云原生·架构·serverless·service_mesh·软考架构师
hm宋19 小时前
ZooKeeper 容灾切换免重启实践:域名化配置与客户端自动迁移
分布式·zookeeper·云原生
吴声子夜歌19 小时前
ApacheCommons——commons-configuration2(多数据源配置统一管理与热加载)
java·开发语言·算法·apache
W658034191 天前
Meta Muse Glimmer 30B开源深度拆解:Apache 2.0+投机解码,24GB显卡跑本地Agent
ai·开源·大模型·apache·deepseek