Zookeeper

278 阅读2分钟

重点

  1. zab协议
  2. 分布式选举算法
  3. 分布式锁的实现原理
  4. watcher机制

基础知识

  1. ZooKeeper 提供了什么?

    1. 可以认为zk是为了保证数据在集群间的数据一致性。
    2. 分布式系统协调能力。
  2. Zookeeper 的典型应用场景

    什么是Zookeeper,有哪些应用场景

    • 发布、订阅模式(watch模式),比如注册中心,节点间配置数据的一致性。
    • master选举(集群管理)
    • 数据同步(ZAB协议,一致性)
    • 分布式锁(一致性)
    • 命名服务(一致性)
  3. Zookeeper内部结构 zk其实是一个文件管理系统,通过创建节点来实现。

  4. ZAB协议?

    Zookeeper ZAB 协议详解

  5. zookeeper的选举机制

    ZooKeeper 技术内幕:Leader 选举

    1. 选举的时机:当服务器的状态为LOOKING,即寻找leader的状态,节点刚加入或者和leader失联之后,都是此状态。
    2. 如何确定leader不可用,心跳指令,在一定时间内如果leader的心跳没过来,那么认为其不可用。
    3. 选举时是否提供服务:不能,只有选举成功,即存在leader节点后,集群才提供服务。
  6. zk分布式锁的实现原理

    1. 四种类型的数据节点
      临时、持久、临时有序、持久有序
    2. 临时节点的生命周期
      与客户端会话保持一致,当会话失效后,节点删除
  7. Zookeeper Watcher 机制 -- 数据变更通知
    客户端注册 Watcher 实现
    服务端处理 Watcher 实现
    客户端回调 Watcher

  8. Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?

    zookeeper之监听事件总结

    不是永久的,因为设计思路是,无需知道每一次变更,如果设计为永久的,对性能要求较高,消费者可以自行再次订阅即可。

  9. Zookeeper 下 Server 工作状态
    服务器具有四种状态,分别是LOOKING、FOLLOWING、LEADING、OBSERVING。

    • LOOKING:寻找Leader状态。当服务器处于该状态时,它会认为当前集群中没有Leader,因此需要进入Leader选举状态。
    • FOLLOWING:跟随者状态。表明当前服务器角色是Follower。
    • LEADING:领导者状态。表明当前服务器角色是Leader。
    • OBSERVING:观察者状态。表明当前服务器角色是Observer。
  10. 集群最少要几台机器,集群规则是怎样的?
    最少:3;建议:2*N+1

    为什么不用偶数,因为zk的选举是大于半数,奇数比偶数少一台服务器也可提供服务

  11. zk如何解决假死和脑裂的问题

  12. zk部署奇数台以及防止脑裂问题解析

  13. zk如何实现分布式状态通知

面试题收集

  1. 29道Zookeeper面试题超详细(附答案)