资料内容:
1. ZooKeeper 是什么?
ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群
中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易
用的接口和性能高效、功能稳定的系统提供给用户。
分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服
务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功
能。
Zookeeper 保证了如下分布式一致性特性:
(1) 顺序一致性
(2) 原子性
(3) 单一视图
(4) 可靠性
(5) 实时性(最终一致性)
客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册
了监听器,这个监听器也是由所连接的 zookeeper 机器来处理。对于写请求, 这些
请求会同时发给其他 zookeeper 机器并且达成一致后,请求才会返回成功。因
此,随着 zookeeper 的集群机器增多,读请求的吞吐会提高但是写请求的吞吐会
下降。
有序性是 zookeeper 中非常重要的一个特性,所有的更新都是全局有序的,每个
更 新 都 有 一 个 唯 一 的 时 间 戳 , 这 个 时 间 戳 称 为 zxid(Zookeeper
Transaction Id)。而读请求只会相对于更新有序,也就是读请求的返回结果中
会带有这个 zookeeper 最新的 zxid。
2. ZooKeeper 提供了什么?
(1) 文件系统
(2) 通知机制
3. Zookeeper 文件系统
Zookeeper 提供一个多层级的节点命名空间(节点称为 znode)。与文件系统不同
的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放
数据而目录节点不行。
Zookeeper 为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构, 这种
特性使得 Zookeeper 不能用于存放大量的数据,每个节点的存放数据上限为 1M。
4. ZAB 协议?
ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持崩溃恢复的原子广播
协议。
ZAB 协议包括两种基本的模式:崩溃恢复和消息广播。
当整个 zookeeper 集群刚刚启动或者 Leader 服务器宕机、重启或者网络故障导
致不存在过半的服务器与 Leader 服务器保持正常通信时,所有进程(服务器)
进入崩溃恢复模式,首先选举产生新的 Leader 服务器,然后集群中Follower 服务
器开始与新的 Leader 服务器进行数据同步,当集群中超过半数机器与该 Leader
服务器完成数据同步之后,退出恢复模式进入消息广播模
式,Leader服务器开始接收客户端的事务请求生成事物提案来进行事务请求处理。