1. ZooKeeper 是什么?
ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护。
ZooKeeper 可以视为一个高可用的文件系统。
ZooKeeper 可以用于发布/订阅、负载均衡、命令服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能 。
2. ZooKeeper 提供了什么?
3. Zookeeper 文件系统
zookeeper的文件系统有点类于树形的数据结构,
从根结点开始到所有的的子节点的路径都是唯一的,且所有的节点都叫作znode节点而且有的节点可能为目录也可能为文件
4. ZAB 协议?
Zab协议 的全称是Zookeeper Atomic Broadcast(Zookeeper原子广播)。
Zab协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议,是Zookeeper保证数据一致性的核心算法。Zab借鉴了Paxos算法,但又不像Paxos那样,是一种通用的分布式一致性算法。它是特别为Zookeeper设计的支持崩溃恢复的原子广播协议。
5. 四种类型的数据节点 Znode
持久(persistent), 临时(ephemeral),持久序列(persistent_sequential), and 临时序列(ephemeral_sequential)。
6. Zookeeper Watcher 机制 -- 数据变更通知
Zookeeper 允许客户端向服务端的某个 Znode 注册一个 Watcher 监听,当服务端的一些指定事件触发
了这个 Watcher,服务端会向指定客户端发送一个事件通知来实现分布式的通知功能,然后客户端根据Watcher 通知状态和事件类型做出业务上的改变。
7. 客户端注册 Watcher 实现
8. 服务端处理 Watcher 实现
9. 客户端回调 Watcher