教程目录
ZooKeeper 的数据模型?
一、ZNode ZooKeeper 数据以树形结构存储,每个节点叫 ZNode,路径用 / 分隔,如 /a/b/c。 二、节点类型 持久节点:创建后一直存在,直到删除。 临时节点:创建者会话断开自动删除。 持久顺序节点:持久 + 单调递增序号。 临时顺序节点:临时 + 单调递增序号,常用于分布式锁。
ZooKeeper 如何保证一致性?
一、ZAB 协议 ZooKeeper Atomic Broadcast,类似 Paxos。 二、角色 Leader:处理写请求,发起投票。 Follower:处理读请求,参与投票。 Observer:只读,不参与投票,扩展读能力。 三、写流程 客户端写请求发给任意节点,非 Leader 转发给 Le
ZooKeeper 实现分布式锁?
一、原理 利用临时顺序节点 + Watcher。 二、加锁流程 在 /lock 节点下创建临时顺序节点 /lock/seq-000000001。 获取 /lock 下所有子节点,判断自己是否最小。 是最小 → 获取锁成功。 不是最小 → 监听前一个节点的删除事件,阻塞等待。 三、释放锁 主动删除自己
ZooKeeper 的 Watcher 机制?
一、定义 客户端可以在 ZNode 上注册 Watcher,当节点状态变化时,服务端通知客户端,触发回调。 二、特性 一次性:Watcher 触发后失效,需重新注册。 轻量:只发送事件类型和路径,不发送数据。 异步:通知是异步发送的。 三、事件类型 NodeCreated:节点创建。 NodeDel
ZooKeeper 和 Nacos 的区别?
一、对比 维度 ZooKeeper Nacos 一致性 CP(ZAB) 支持 CP/AP 配置中心 需自行封装 原生支持,实时推送 服务发现 临时节点 临时/持久实例 控制台 无官方 有 Web 控制台 语言 Java Java 二、选择 需要强一致、分布式协调(锁、选主)→ ZooKeeper。