
应用场景:
- 分布式通知,协调
- 集群管理
- Master 选举
- 分布式锁 分布式队列
数据结构
类似于文件系统结构,每一个节点称为ZNode 可以存放数据
架构
- 2n+1 个server 当n+1个节点可用时,系统可用
- server 角色类型 存放数据 ( leader: 不接受客户端请求负责投票和决议,最终更新状态
- follwer:接受客户端请求并返回,参与leader 发起的投票
leader 选举
leader 失去Leader 地位时使用paxos 算法选举
- 每一个server向所有server 请求成为leader
- 投票超过一半的成为leader ,否则重新执行第一步
数据交互
- 读:直接 读取client连接的server 的数据
- 更新 1、 client向server发送请求 2、server向leader发送请求 3、leader发起proposol过程 4、follower反馈结果 5、leader接收响应,如果超过⼀半认为成功,则认为 成功,否则认为失败。并将结果反馈给server 6、server将结果反馈给client
ObServer节点
ObServer节点:和client交互,存有数据的副本,不参与投票
client架构
- ClientCnxn:管理 client和ZooKeeper间 的网络连接
- WatcherManager:管 理Watcher,如:负 责对ZNode的监控
- Zookeeper:Client交 互的主要接⼝,如创 建Znode、更新ZNode
ZooKeeper承诺
顺序性 原⼦性 强⼀致性 可靠性 实时性