• 基本定义

    image.png

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

    image.png

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

    image.png

    • 节点类型

    image.png

    • ZK的事务

    • 系统模型

      • ZXID: 事务ID
    • 节点包括节点数据和节点状态
    • watcher流程(存储在客户端中)

    image.png

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