zoukankan      html  css  js  c++  java
  • 【4】Zookeeper数据模型

    一、Znode节点是什么

    1.1、概念

      Znode节点是Zookeeper中数据模型中最小的数据单元。Zookeeper的数据模型是一颗树,由"/"进行分割路径。每个znode都会保存自己的数据内容,同时还会保存一些属性信息。zookeeper将所有的数据存储在内存中。

    1.2、数据模型

      Zookeeper的视图结构类似标准的Unix文件系统,但是没有引入文件系统中目录和文件相关概念,而是使用了自己特有的数据节点的概念,称为Znode。每个Znode上都可以保存数据,同时还可以挂载子节点,也构成了一个层次化的命名空间,称之为树。

    1.3、Znode节点分类

      ZooKeeper中的数据节点是有生命周期的,周期长短取决于节点类型。 ZooKeeper 将Znode节点可以分为:持久节点(PERSISTENT )、临时节点(EPHEMERAL)。同时还允许为每个节点添加一个特殊属性:顺序性(SEQUENTIAL )。具体在节点创建过程中,一般是组合使用,生成以下 4 种节点类型:

    持久节点(PERSISTENT)
      指在该数据节点创建后,就一直存在与Zookeeper服务器上,直到有删除操作来主动清除这个节点。不会因为创建该节点的客户端会话失效而消失。

    持久顺序节点(PERSISTENT_SEQUENTIAL)
      这类节点的基本特性和持久节点节点是一致的。额外的特性是其顺序性。在ZK中每个父节点会为他的第一级子节点维护一份顺序,用于记录每个子节点创建的先后顺序。基于这个特性,在创建子节点的时,可以设置这个属性,那么在创建节点过程中,ZK会自动在节点后面加一个整形数字。作为新的、完整的节点名。这个数字是由父节点维护的递增数字,其范围是整型的最大值。

    临时节点(EPHEMERAL)
      和持久节点不同,临时节点的生命周期和客户端会话绑定。如果客户端会话失效,那么这个节点就会自动被清除掉。注意,这里提到的是会话失效,而非TCP连接断开。

    临时顺序节点(EPHEMERAL_SEQUENTIAL)
      临时顺序节点的基本特性和临时节点是一致的,同样是在临时节点的基础上添加了顺序的特性。

    注意:

    • 临时节点下面不能创建子节点,即临时节点只能作为叶子节点。

    1.4、Znode节点状态信息

    参数 说明
    cZxid 创建节点时的事务Zxid
    ctime 创建节点时的时间
    mZxid 最后修改节点时的事务Zxid
    mtime 最后修改节点时的时间
    pZxid 表示该节点的子节点列表最后一次修改的事务ID,添加或删除子节点会变,修改子节点数据内容不影响此Zxid
    cversion 子节点版本号,子节点每次修改版本号加1
    dataversion 数据版本号,数据每次修改该版本号加1
    aclversion 权限版本号,权限每次修改该版本号加1
    ephemeralOwner 若此节点为临时节点,其值为节点Owner的会话ID;否则值为0
    dataLength 该节点数据域长度
    numChildren 该节点拥有子节点的数量

    参考资料

    参考书籍:从Paxos到Zookeeper:分布式一致性原理与实践

  • 作者: DeepInThought
    出处: https://www.cnblogs.com/DeepInThought
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
  • 相关阅读:
    redis之通信开销限制redis cluster规模的关键因素
    redis解决秒杀问题与数据倾斜
    codis与redis
    脑裂中的数据丢失
    redis主从同步与故障切换的配置项可能出现的问题
    redi事务机制
    redis并发访问的问题之实现分布式锁
    redis的小功能 bitmaps 发布订阅,HyperLogLog GEO LUA
    redis之api学习
    Ubuntu17.04安装WineQQ7.8及微信
  • 原文地址:https://www.cnblogs.com/DeepInThought/p/11055694.html
  • Copyright © 2011-2022 走看看