• ZooKeeper入门(三) ZooKeeper数据模型


     1 简述

    ZooKeeper可以看成一种高可用性的文件系统,但是,它没有文件和目录,而是使用节点,称为znode

    znode可以作为保存数据的容器(如同文件),也可以作为保存其他节点的容器(如同目录)。如下图

     2 节点中存储的数据

    2.1 版本号

    对于每个znode来说,存在三个版本号:

    dataVersion

    数据版本号,每次对节点进行修改,dataVersion的值都会增加1

    cversion 
    子节点的版本号。当znode的子节点有变化时,cversion 的值就会增加1

    aclVersion 
    ACL的版本号,关于znode的ACL(Access Control List,访问控制),可以参考

    http://zookeeper.apache.org/doc/trunk/zookeeperProgrammers.html#ch_zkDataModel

    以数据版本号来说明zk中版本号的作用:

    每当客户端检索数据时,它将同时检索数据的版本号。并且如果一个客户端执行了某个节点的更新或删除操作,它也必须提供要被操作的数据的版本号。如果所提供的数据版本号与实际的不匹配,那么这个操作将会失败。

    如下图:

    2.2 事务ID

    事物id, Zxid,分cZxid和 mZxid 

    cZxid 
    Znode创建的事务id。

    mZxid 
    Znode被修改的事务id,即每次对znode的修改都会更新mZxid。

    如下图,是Zxid在客户端重连中的作用:

     

     2.3 时间戳

    包括znode的创建时间和修改时间,创建时间是znode创建时的时间,创建后就不会改变;修改时间在每次更新znode时都会发生变化。

  • 相关阅读:
    9.4、安装zabbix(2)
    9.4、安装zabbix(1)
    9、zabbix监控
    50、django工程(ajax)
    49、django工程(cookie+session)
    48、django工程(model)
    47、django工程(template)
    46、django工程(view)
    45、django工程(URLconf)
    44、djanjo工程(介绍)
  • 原文地址:https://www.cnblogs.com/zcjcsl/p/7806710.html
Copyright © 2020-2023  润新知