重点
- zab协议
- 分布式选举算法
- 分布式锁的实现原理
- watcher机制
基础知识
-
ZooKeeper 提供了什么?
- 可以认为zk是为了保证数据在集群间的数据一致性。
- 分布式系统协调能力。
-
Zookeeper 的典型应用场景
- 发布、订阅模式(watch模式),比如注册中心,节点间配置数据的一致性。
- master选举(集群管理)
- 数据同步(ZAB协议,一致性)
- 分布式锁(一致性)
- 命名服务(一致性)
-
Zookeeper内部结构 zk其实是一个文件管理系统,通过创建节点来实现。
-
ZAB协议?
-
zookeeper的选举机制
- 选举的时机:当服务器的状态为LOOKING,即寻找leader的状态,节点刚加入或者和leader失联之后,都是此状态。
- 如何确定leader不可用,心跳指令,在一定时间内如果leader的心跳没过来,那么认为其不可用。
- 选举时是否提供服务:不能,只有选举成功,即存在leader节点后,集群才提供服务。
-
- 四种类型的数据节点
临时、持久、临时有序、持久有序 - 临时节点的生命周期
与客户端会话保持一致,当会话失效后,节点删除
- 四种类型的数据节点
-
Zookeeper Watcher 机制 -- 数据变更通知
客户端注册 Watcher 实现
服务端处理 Watcher 实现
客户端回调 Watcher -
Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?
不是永久的,因为设计思路是,无需知道每一次变更,如果设计为永久的,对性能要求较高,消费者可以自行再次订阅即可。
-
Zookeeper 下 Server 工作状态
服务器具有四种状态,分别是LOOKING、FOLLOWING、LEADING、OBSERVING。- LOOKING:寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有Leader,因此需要进入Leader选举状态。
- FOLLOWING:跟随者状态。表明当前服务器角色是Follower。
- LEADING:领导者状态。表明当前服务器角色是Leader。
- OBSERVING:观察者状态。表明当前服务器角色是Observer。
-
集群最少要几台机器,集群规则是怎样的?
最少:3;建议:2*N+1为什么不用偶数,因为zk的选举是大于半数,奇数比偶数少一台服务器也可提供服务