zk-002 zookeeper的基本概念

数据模型

  • 分层结构
  • 树形结构中的每个节点叫做znode
  • 每个znode包含三类数,
    • 第一: znode自身的数据内容;
    • 第二: znode 节点的状态信息 stat info, 来存储数据的变化 ACL的变化和时间戳;
    • 第三: znode 的ACL 信息(权限信息).
  • 节点路径
    • 斜线分隔例如: /Zoo/Duck
    • 没有相对路径
  • 数据发生变化时,版本号会递增
  • 可以对Znode中的数据进行读写操作

基本概念

集群角色

  • Leader: 为客户端提供读写服务
  • Follower: 提供读服务, 所有的写服务都需要转交给Leader角色,参与选举
  • Observer: 提供读服务, 不参与选举过程,一般是为了增强zk集群的读请求并发能力

会话(session)

  • Zk的客户端与zk的服务端之间的连接
  • 通过心跳检测保持客户端连接的存活
  • 接收来自服务端的watch事件通知
  • 可以设置超时时间

数据节点znodel类型

  • Zk树形结构中的数据节点,用于存储数据
  • 持久节点(PERSISTENT): 一旦被创建, 除非主动调用删除操作, 否则一直存储在ZK
  • 临时节点(EPHEMERAL): 与客户端的会话绑定,一旦客户端会话失效, 这个客户端所创建的所有临时节点都会被移除
  • PERSISTENT_SEQUENTIAL: 创建子节点时,如果设置属性SEQUENTIAL,则会自动在节点名称后面增加一个整形数字, 上限是整形的最大值.
  • EPHEMERAL_SEQUENTIAL: 创建建节点时,如果设置属性SEQUENTIAL,则会自动在节点名称后面增加一个整形数字, 上限是整形的最大值.

znode 的stat信息

使用get命令获取指定节点的数据时, 同时也将返回该节点的状态信息, 称为Stat. 其包含如下字段:

  • czxid. 节点创建时的zxid.
  • mzxid. 节点最新一次更新发生时的zxid.
  • ctime. 节点创建时的时间戳.
  • mtime. 节点最新一次更新发生时的时间戳.
  • dataVersion. 节点数据的更新次数.
  • cversion. 其子节点的更新次数.
  • aclVersion. 节点ACL(授权信息)的更新次数.
  • ephemeralOwner. 如果该节点为ephemeral节点, ephemeralOwner值表示与该节点绑定的session id. 如果该节点不是ephemeral节点, ephemeralOwner值为0.
  • dataLength. 节点数据的字节数.
  • numChildren. 子节点个数.

watcher

  • 作用于Znode节点
  • 多种事件通知: 数据更新,子节点状态等

ACL(Access Control Lists)

  • 类似于linux/unix的权限控制
  • CREATE: 建子节点的权限
  • READ: 获取节点数据和子节点列表的权限
  • WRITE: 更新节点数据的权限
  • DELETE: 删除子节点的权限
  • ADMIN: 配置节点ACL的权限

CREATE和DELETE是针对子节点的权限控制

你可能感兴趣的:(zk-002 zookeeper的基本概念)