美文网首页
zookeeper之数据模型

zookeeper之数据模型

作者: gmdqtd | 来源:发表于2019-06-20 23:44 被阅读0次
    1、基本数据模型

    ZK数据模型是一个树形结构,有点像前端的tree.js组件,也类似Linux操作系统的文件系统,也是以树的形式来存储。严格来说是一颗多叉树,每个节点上都可以存储数据,每个节点还可以拥有N个子结点,最上层是根节点以“/”来代表。


    基本数据模型
    1. 在ZK中,每一个数据节点也被成为znode,它可以有子节点,也可以有数据。每个节点分为临时节点永久节点,临时节点在客户端会话断开后消失,而且临时节点下不能存在子节点。永久节点就相当于进行了持久化,只能人为的去删除;临时节点也可以人为的删除,但是在session失效后,临时节点的所有数据都会丢失。
    2. 每一个ZK节点都有各自的版本号,每当节点数据发生变化,那么该节点的版本号会累加(乐观锁)。删除/修改过时的节点,版本号不匹配则会报错。比如在查询某一个节点的时候,比如这时候版本是1,经过两个人的删除或者修改之后,这时候版本就会由1变为2再变为3。如果我们需要删除这个节点,但是如果传入的版本号是旧的版本号,那么这时候就会报出一个版本号不匹配的异常。
    3. 每一个ZK节点存储的数据量不宜过大,几k即可,比如存储一些比较简单的对象或者size比较小的集合,不适合放很多很庞大的集合。
    4. 每个节点还可以设置acl,可以通过权限来限制用户的访问。
    2、基本操作

    在ZK的bin目录下有很多可操作脚本:

    bin目录结构

    这里使用:

    ./zkCli.sh
    
    image.png
    help
    
    help列表

    下面来演示一下ZK节点的几个特性:

    1. 当前节点下已经有了一个zookeeper节点,又新建了一个就会报错提示:
    image.png

    创建节点,使用create命令:后面有两个参数-s和-e。-s表示sequence,-e表示临时。


    image.png
    1. 创建一个临时节点:


      image.png

    这里出现了异常,退出了当前会话,重新连接服务:


    image.png

    刚刚创建的临时节点已经不见了;


    image.png

    先创建一个普通节点seq:


    image.png

    在seq下创建有序节点:

    image.png

    是从0开始,依次递增:

    image.png

    再创建一个临时节点temp:

    image.png

    在temp下创建一个子节点temp1,会出现错误提示:


    image.png

    相关文章

      网友评论

          本文标题:zookeeper之数据模型

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