- 基本定义

- 架构包含角色
- leader: 提供读和写服务
- follower: 提供读服务、具有投票权
- observer: 提供读服务;不参与选举、不参与写的过半成功
- TCP 会话
- 客户端能够心跳检测与服务器保持有效的会话
- 节点数据的版本管理

- 通过watcher对节点变化进行监听
- 允许用户在指定节点上注册一些Watcher,并且在一些特定事件触发的时候,Zookeeper服务端会将事件通知到感兴趣的客户端
- ACL权限控制

- 节点类型

ZK的事务
系统模型
- ZXID: 事务ID
- 节点包括节点数据和节点状态
- watcher流程(存储在客户端中)

- 关于ACL
- 可以控制IP
- 可以控制用户名和密码
- 可以控制anyone或者超级用户
- zk的应用场景

- 数据发布/订阅
- 推拉结合(推指注册watcher的节点)
- 命名服务
- 分布式全局唯一ID;创建顺序节点
- 集群管理
- 两大特性:Watcher监听;临时节点
- Master选举
- 利用数据的强一致性
- 实现:首先会在 ZooKeeper 上创建一个日期节点,例如“2020-11-11,客户端集群每天都会定时往ZooKeeper 上创建一个临时节点,在这个过程中,只有一个客户端能够成功创建这个节点,那么这个客户端所在的机器就成为了Master,其他机器则注册监听
- 分布式队列
- 分布式锁
- 排它锁
- 定义锁: 创建一个节点表示锁
- 获取锁:创建子节点表示锁
- 释放锁:会话关闭或者删除节点
- 共享锁
- 排它锁
- 分布式一致性算法
- ZAB协议
- paxos
- 命令行
- create 、set、 ls、 get、delete
- 开源客户端
- zkClient
- Curator
- 底层通信协议: 默认Netty, 也可以NIO
