zookeeper简介(二)

zookeeper简介(二)

Zookeeper会话机制

session会话机制

  • 一个客户端连接一个会话,由zk分配唯一会话id;
  • 客户端以特定的时间间隔发送心跳以保持会话有效; tickTime
  • 超过会话超时时间未收到客户端的心跳,则判定客户端死了;(默认2倍tickTime)
  • 会话中的请求按FIFO顺序执行。

znode节点数据构成

  • 节点数据:存储的协调数据(状态信息、配置、位置信息等)
  • 节点类型:持久、顺序、临时、临时顺序
  • 名称唯一,命名规范
  • 节点元数据(stat结构)
  • 数据大小上限:1M
  • 一个znode维护了一个属性结构,该结构包括:版本号、ACL变更、时间戳。每次znode数据发生变化,版本号都会递增,这样客户端的读请求可以基于版本号来检索状态相关数据。
  • 每个znode都有一个ACL,用来限制是否可以访问该znode。
  • 在一个命名空间中,对znode上存储的数据执行读和写请求操作都是原子的。

znode—节点类型

  • 临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点.

  • 持久节点(PERSISTENT):创建后永久存在,除非主动删除。

    临时节点(EPHEMERAL):临时创建的,会话结束节点自动被删除,也可以手动删除,临时节点不能拥有子节点.

  • 临时顺序节点(EPHEMERAL_SEQUENTIAL):具有临时节点特征,但是它会有序列号

  • 持久顺序节点(PERSISTENT_SEQUENTIAL):具有持久节点特征,但是它会有序列号。

节点元数据(stat结构)

每一个Znode都有对应的stat结构,和文件系统类似。stat状态主要包含下面的信息:

  • cZxid. 节点被创建时候的事务ID
  • mZxid 节点最后一次被修改时候的事务ID
  • pZxid 该节点的子节点最后一次被修改时的事务ID。子节点删除或添加才会影响pZxid
  • ctime 节点被创建的时间
  • mtime 节点被修改的世界
  • dataVersion 这个节点数据改变的次数
  • cversion 子节点被改变的次数
  • aclVersion 节点的ACL(访问控制列表被改变的次数)
  • ephemeralOwner 创建该临时节点的 session ID。如果是持久节点,设置为0
  • dataLength 数据内容长度

节点的访问控制(ACL)

zk提供了ACL来控制znode节点的访问,只有符合了ACL控制,才可以操作该节点,否则将无法操作。
Zookeeper支持可配置的认证机制。它利用一个三元组来定义客户端的访问权限:
(scheme:expression, perms) 。其中:

  1. Schema 代表权限控制模式,分别为:
    • World 任何人
    • Auth 不需要ID
    • Digest 用户名和密码方式的认证
    • IP Address IP地址方式的认证
  2. perms(权限),ZooKeeper支持如下权限

    • CREATE: 创建子节点
    • READ: 获取子节点与自身节点的数据信息
    • WRITE:在Znode节点上写数据
    • DELETE:删除子节点
    • ADMIN:设置ACL权限
Znode的Acl只是针对某个节点,不会作用到它的子节点上
原文地址:https://www.cnblogs.com/javadevelper/p/10745496.html