1 ,zookeeper 中的数据,是可以进行增删改查的 :

     对数据的改动,既可以用 zookeeper 自带的客户端来操作,也可以通过 java API 来操作。

2 ,zookeeper 客户端 :

     能访问 zookeeper 中的数据的工具,都是 zookeeper 的客户端。
     zookeeper 的常用的客户端包括 zookeeper 自带的客户端 zkCli.sh ,也可以通过 javaAPI 来操作 zookeeper 中的数据。

3 ,zkCli.sh – 连接 zookeeper : 连接以后就可以操作 zk 数据了

     zkCli.sh -server node01:2181

4 ,zkcli.sh – 断开连接 :

     quit

5 ,zkcli.sh – 查看帮助 :

     help

6 ,zkcli.sh – 查看子节点 :ls

     ls /

7 ,zkcli.sh – 新增节点,并且携带数据 :create

     create /xyj wce
     create /xyj/sf ts

8 ,zookeeper 的数据结构 – 树形结构 :重点理解

  1. 一句话 :zookeeper 的数据是挂在节点上的。
                   这是一种我们之前没有见过的数据结构。
  2. 看图 :zk 适合表示具有层级关系的数据
    6,zkCli.sh 使用 ( 增查改删,树形结构,元数据信息 )
    6,zkCli.sh 使用 ( 增查改删,树形结构,元数据信息 )
  3. 接下来我们把树上的果子填满 :
    create /xyj wce
    create /xyj/sf ts
    create /xyj/dsx swk
    create /xyj/esx zbj
    create /xyj/ssd ss
    create /xyj/sf/wq jgz
    create /xyj/dsx/wq jgb

9 ,zkCli.sh – 查 : 查看子节点

查看 /xyj 节点中的子节点 :ls /xyj

10 ,zkCli.sh – 查 : 查看节点携带的数据

查看 /xyj 这个节点所携带的数据是什么 : get /xyj

11 ,zkCli.sh – 改 :

修改 /xyj 节点的数据的内容 : 我不想让他等于 wce 了,我让他等于 wucehngen :set /xyj wuchengen

12 ,zkCli.sh – 删 : 单个节点

删除 /xyj/ssd 节点 : delete /xyj/ssd

13 ,zkCli.sh – 删 : 整个目录

删除 /syj 节点,并且,删除掉 /xyj 的所有子节点 : rmr /xyj

14,元数据信息 :

  1. 我们把刚才删除掉的数据再新增回来 :
    create /xyj wce
    create /xyj/sf ts
    create /xyj/dsx swk
    create /xyj/esx zbj
    create /xyj/ssd ss
    create /xyj/sf/wq jgz
    create /xyj/dsx/wq jgb

  2. 查询 /xyj 节点所携带的数据 :
    get /xyj

  3. 看到了如下内容 :
    6,zkCli.sh 使用 ( 增查改删,树形结构,元数据信息 )

  4. 携带的数据是 : wce

  5. 元数据信息 :

    cZxid = 0x160000000b
    ctime = Fri May 24 16:24:45 CST 2019
    mZxid = 0x160000000b
    mtime = Fri May 24 16:24:45 CST 2019
    pZxid = 0x160000000f
    cversion = 4
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 4

  6. 元数据信息解释 :
    1 ,cZxid :创建节点时的事务的 id
    2 ,ctime :节点的创建时间
    3 ,mZxid :修改节点时的事务的 id
    4 ,pZxid :跟子节点有关,如果子节点新增了,或者删除了,这个值就会改变。
    5 ,事务 id 到底是个啥 :
         每次增删改操作,对于 zk 来说,都是一次改变,都会记录下来一个 id ,这,就是事务 id 。
         zXid 是创建节点时产生 id ,不会改变。
         mZxid 是修改时产生的 id ,每次修改该节点,他都会改变
         操作 :修改一个节点的数据,看看他的 3 个 zxid 会不会改变。
    6 ,cversion :子节点的版本号,删除或添加子节点,版本号会自增
    7 ,dataVersion : 数据版本号
         每次修改数据,这个号码都会自增,这个特性通常用在高并发操作的时候。
         操作一下 :一直的修改一个节点的数据,发现他的版本号一直在增加。
    8 ,aclVersion :权限版本号
         每次修改权限,版本号就自增
    9,Action Control List (ACL): 动作控制列表
         权限管理机制,管理所有 zNode 的读写。
    10,ephemeralOwner :节点拥有者( 指的是客户端 )
         如果是临时节点这个是znode拥有者的session id。如果不是临时节点则是0。
    11,dataLength : znode的数据长度
         默认最大值,1M ,所以说,zk 不可以用来存储数据,他是存储配置信息用的。再说一遍,不要把 zookeeper 当做数据库来用。
    12,numChildren : znode子节点数量

  7. 元数据信息 ( 需要记住的 ) :
    1 ,Zxid :事务 id ( zookeeper 的数据有点风吹草动,事务 id 就 +1 )
    2 ,dataVersion : 数据版本号 ( 每次修改数据,这个版本号就 +1 )
    3, dataLength : znode 的数据长度 ( 默认直达之 1M )

相关文章:

  • 2022-01-03
  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
  • 2022-12-23
  • 2022-12-23
  • 2021-12-15
  • 2021-12-03
猜你喜欢
  • 2021-08-04
  • 2022-12-23
  • 2022-01-06
  • 2021-06-20
  • 2022-12-23
  • 2022-01-28
相关资源
相似解决方案