美文网首页
一文了解Zookeeper数据节点-znode

一文了解Zookeeper数据节点-znode

作者: Java花园 | 来源:发表于2019-06-14 22:25 被阅读0次

    Zookeeper系列介绍(持续更新

    ZooKeeper命名空间内部拥有一个树状的内存模型,其中各节点被称为znode。每个znode包含一个路径和与之相关的元数据,以及该znode下关联的子节点列表。


    znode结构

    znode节点类型

    每个znode都有不同的生命周期,而生命周期长短取决于znode的节点类型。Zoookeeper提供了4种节点类型。 znode节点类型

    Znode客户端操作

    客户端对于znode的相关操作

    znode状态信息

    每个znode数据节点中除了可以存储业务数据外,其本身还存储了数据节点相关的一些状态信息。共包含以下几种状态信息。

    znode状态信息 解释
    cZxid create ZXID,即该数据节点被创建时的事务id
    ctime create time,即该节点的创建时间
    mZxid modified ZXID,即该节点最终一次更新时的事务id
    mtime modified time,即该节点最后一次的更新时间
    pZxid 该节点的子节点列表最后一次修改时的事务id,只有子节点列表变更才会更新pZxid,子节点内容变更不会更新
    cversion 子节点版本号,当前节点的子节点每次变化时值增加1
    dataVersion 数据节点内容版本号,节点创建时为0,每更新一次节点内容(不管内容有无变化)该版本号的值增加1
    aclVersion 节点的ACL版本号,表示该节点ACL信息变更次数
    ephemeralOwner 创建该临时节点的会话的sessionId;如果当前节点为持久节点,则ephemeralOwner=0
    dataLength 数据节点内容长度
    numChildren 当前节点的子节点个数
    • zxid(事务id)说明:Zookeeper中每个变化都会产生一个全局唯一的zxid。通过它可确定更新操作的先后顺序。例如,zxid1小于zxid2,则说明zxid1操作先执行,zxid2后执行; zxid对于整个Zookeeper都是唯一的,即使操作的是不同的znode。

    • dataVersion说明:每一个znode都有一个数据版本号,每次对znode做更新操作时值自增。ZooKeeper中一些更新操作,例如setData和delete根据版本号有条件地执行。多个客户端对同一个znode进行更新操作时,因为数据版本号,才能保证更新操作的先后顺序性。例如,客户端A正在对znode节点做更新操作,此时如果另一个客户端B同时更新了这个znode,则A的版本号已经过期,那么A调用setData不会成功。

      dataVersion作用

    ACL(Access Control List,访问控制列表 )

    ZooKeeper提供了一套完善的ACL权限控制机制保障数据安全性。

    • 对于身份认证,提供了以下几种方式。
    身份认证方式 解释
    world 默认方式,所有用户都可无条件访问,组合形式为:world:anyone:[permissions]
    digest 用户名:密码认证方式,最常用,组合形式为:digest:username:BASE64(SHA1(password)):[permissions]
    ip 对指定ip进行限制,组合形式为:ip:127.0.0.1:[permissions]
    auth 认证登录形式,需要用户获取权限后才可访问,组合形式为 auth:userpassword:[permissions]
    • 对于znode权限,提供了以下5种操作权限。
    权限 简写 解释
    CREATE C 允许授权对象在当前节点下创建子节点
    DELETE D 允许授权对象在当前节点下删除子节点
    WRITE W 允许授权对象在当前节点进行更新操作
    READ R 允许授权对象在当前节点获取节点内容或获取子节点列表
    ADMIN A 允许授权对象对当前节点进行ACL相关的设置操作

    相关文章

      网友评论

          本文标题:一文了解Zookeeper数据节点-znode

          本文链接:https://www.haomeiwen.com/subject/fwbmfctx.html