zoukankan      html  css  js  c++  java
  • Zookeeper(六)数据模型

    Zookeeper数据模型:

    Zookeeper的结构类似标准的文件系统,但这个文件系统中没有文件和目录,而是统一使用节点(node)的概念,称为znode。Znode作为保存数据的容器(限制在1mb以内),也构成了一个层次化的命名空间。

     

    znode

    zookeeper目录中的每一个节点对应着一个znode,每个znode维护着一个属性结构,它包含数据的版本号、时间戳、等信息。Zookeeper就是通过这些属性来实现它特定的功能。每当znode的数据改变时,相应的版本号会增加,每当客户端查询、更新和删除数据时,也必须提供要被操作的znode版本号,如果所提供的数据版本号与实际的不匹配,那么将会操作失败。

    节点属性:

    属性

    描述

    czxid

    节点被创建的zxid值

    mzxid

    节点被修改时zxid值

    ctime

    节点创建的时间

    mtime

    节点最后一次的修改时间

    vesion

    节点的版本号

    cversion

    节点所拥有的子节点被修改的版本号

    aversion

    节点的ACL被修改的版本号

    dataLength

    节点数据的长度

    numChildren

    节点拥有子节点的个数

    ephemeralOwner

    如果节点为临时节点,那么它的值为这个节点拥有者的session ID;负责它的值为0

    Znode是客户端访问的zookeeper的主要实体,它包含了以下主要特征:

    (1)  Watch

    Znode状态发生改变时(增删改等操作),watch (监视器)机制可以让客户端得到通知,并且仅仅只会触发一次watch。

    在读操作exists、getChildren和getData上可以设置监视器,这些监视器可以被写操作create、delete和setData触发。ACL相关的操作不参与任何监视器。当一监视器触发时,会产生一个事件,这个监视器和触发它的操作共同绝地沟了监视器事件类型。

    当所监视的znode被创建子节点、删除或其他数据更新时,设置在exists操作上的监视器将会被触发。

    *  当所监视的znode被删除或其更新时,设置在getData上的监视器将会被触发,创建znode不会触发getData上的监视器,因为getData操作成功执行的前提是znode必须已经在。

    *  当所监视的znode的一个子节点被创建或删除时,或监视的znode自己被删时,设置在getChildren操作上的监视器将会被触发。

    设置监视器的操作及对应的触发器

     

    设置触发

    器的操作

    触发触发器的操作/受影响的节点

    create

     

    delete

     

    setData

    znode

    子节点

    znode

    子节点

     

     

     

     

     

     

     

    Exists

    NodeCreated

     

    NodeDeleted

     

    NodeDataChanged

    getData

     

     

    NodeDeleted

     

    NodeDataChanged

    getChildren

     

     

    NodeDeleted

    NodeDeleted

     


    (2)  数据访问控制

    每个znode创建时间都会有一个ACL列表,用于决定谁可以执行那些操作。

    (3)  临时节点

    Zookeeper节点有两种:临时节点和持久节点。节点类型在创建时确定,并且不能修改。临时节点生命周期依赖创建它的会话,一旦会话结束,临时节点将会被删除。临时节点不允许有子节点。

    (4)  顺序节点

    当创建znode 时设置了顺序节点,那么该znode路径之后便会附加一个递增的计数,这个计数对于此节点的父节点来说是唯一的。

    例如:一个客户端请求创建一个名为/a/b-的顺序节点,则所创建znode的名字可能是a/b-5,稍后另外一个名为/a/b-的顺序节点被创建,计数器会给出一个更大的值来保证znode名称的唯一性,例如/a/b-6。

  • 相关阅读:
    php curl getinfo
    php 实现树形结构
    E时代主机,其实做一个小虚拟主机还是不错的
    php 生成验证码
    php curl
    nodejs 操作mysql
    php ++a和a++
    nodejs上传图片并显示的例子
    json
    Rock,Paper,Scissors 水NOJ 1090
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/2990535.html
Copyright © 2011-2022 走看看