第3章-ZooKeeper-课堂随笔

实时计算 第三章 笔记

ZooKeeper,"分布式协调者"。

分布式是啥

把相同或相关的程序跑在多台服务器上,对外看起来像一个整体。发展路径是单机 → 并行 → 分布式。麻烦的地方在于事务(要么全做要么不做)、资源冗余(一主多副本那套)。

协调框架干什么

解决分布式集群里的一致性问题,主要四件事:配置管理、命名服务、集群管理、分布式锁。说白了就是把"多进程协作"这些破事抽出来做成基础设施,让写业务的人专心写业务。

ZK 本身

Apache 的项目,雅虎那边搞出来的。名字是首席科学家随口起的,因为之前内部项目都拿动物命名。

CAP 原则里它选的是 CP——强一致加分区容错,牺牲一点可用性。

数据模型是 znode,结构像 Linux 文件树,key/value 存数据,单个节点不能超过 1M(它不把自己当数据库)。

节点分持久和临时(会话断了就没了),加 -s 能建顺序节点,自动补 10 位序号。

每个节点有三个版本号(dataVersion、cVersion、aclVersion),还有 zxid 事务 ID,靠它定更新先后。

怎么跑起来的

会话:连上就有 session,有 sessionID 和超时时间,靠 ping 心跳续命,超时管理用分桶策略。

ZAB 协议保证一致性:正常时走消息广播(类似二段提交,Leader 发 proposal,过半 ACK 就 commit);Leader 挂了走崩溃恢复,重新选主。

角色有 Leader、Follower、Observer,Observer 不投票,只帮着扛读请求。

选举就是投票,先选自己,比 zxid 再比 myid,过半就当选。

分布式锁

排他锁(写锁)和共享锁(读锁),靠临时顺序节点排队,各自监听自己前面那个节点,前面的走了自己就拿到锁。挺巧妙的。

posted @ 2026-11-08 10:50  对方正在输入dfzzsr  阅读(3)  评论(0)    收藏  举报