zoukankan      html  css  js  c++  java
  • zookeeper常用客户端命令

    zookeeper常用客户端命令

    zookeeper 命令用于在 zookeeper 服务上执行操作。首先执行命令,打开新的 session 会话,进入终端:

    sh zkCli.shsh zkCli.sh -server 127.0.0.1:2181

    一、新增节点

    create [-s] [-e] [-c] [-t ttl] path [data] [acl] //其中-s为有序节点 -e为临时节点 -c为容器节点 -t指定ttl节点

    1、创建持久化节点

    [zk: localhost:2181(CONNECTED) 3] create /wfj "123456"
    Created /wfj
    [zk: localhost:2181(CONNECTED) 4] create /wfj1 ""
    Created /wfj1

    2、创建持久化有序节点,此时创建的节点名为指定节点名 + 自增序号

    [zk: localhost:2181(CONNECTED) 7] create -s /a "a"
    Created /a0000000003
    [zk: localhost:2181(CONNECTED) 8] create -s /b "b"
    Created /b0000000004
    [zk: localhost:2181(CONNECTED) 9] create -s /c "c"
    Created /c0000000005

     3、创建临时节点,临时节点在会话过期后被删除

    [zk: localhost:2181(CONNECTED) 10] create -e /tmp "tmp"
    Created /tmp

    4、创建临时有序节点,临时节点在会话过期后被删除

    [zk: localhost:2181(CONNECTED) 1] create -s -e /aa "aa"
    Created /aa0000000007
    [zk: localhost:2181(CONNECTED) 2] create -s -e /bb "bb"
    Created /bb0000000008
    [zk: localhost:2181(CONNECTED) 3] create -s -e /cc "cc"
    Created /cc0000000009

     5、创建容器节点,当删除掉container节点下的所有子节点后, container节点本身也会被清除掉,默认被清除的时间是60s

    [zk: localhost:2181(CONNECTED) 11] create -c /container
    Created /container
    [zk: localhost:2181(CONNECTED) 12] create /container/sub1
    Created /container/sub1
    [zk: localhost:2181(CONNECTED) 13] create /container/sub2
    Created /container/sub2
    [zk: localhost:2181(CONNECTED) 14] ls -R /container
    /container
    /container/sub1
    /container/sub2
    [zk: localhost:2181(CONNECTED) 15] delete /container/sub1
    [zk: localhost:2181(CONNECTED) 16] delete /container/sub2
    [zk: localhost:2181(CONNECTED) 17] ls -R /container
    /container
    [zk: localhost:2181(CONNECTED) 18] ls -R /container
    Node does not exist: /container

     6、创建就ttl节点 -t ,ttl节点的特性是可以创建一个打失效时间的节点,失效时间过来之后节点会被自动删除。需要添加扩展业务,修改zkServer.sh。 -Dzookeeper.extendedTypesEnabled=true

    [zk: localhost:2181(CONNECTED) 0] create -t 5000 /ttl-node ttttt
    Created /ttl-node

     二、修改节点

    通过set命令可以对节点进行修改,如下:

    [zk: localhost:2181(CONNECTED) 3] set /wfj "345"
    [zk: localhost:2181(CONNECTED) 4] get /wfj
    345
    [zk: localhost:2181(CONNECTED) 5] stat /wfj
    cZxid = 0x54
    ctime = Tue May 11 07:32:08 UTC 2021
    mZxid = 0x55
    mtime = Tue May 11 08:03:06 UTC 2021
    pZxid = 0x54
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 0

    也可以基于版本号进行修改,类似于乐观锁机制。如果传入的版本号dataVersion和当前版本号不一致时,zookeeper会拒绝本次修改:

    [zk: localhost:2181(CONNECTED) 13] set -v 2 /wfj "123"
    version No is not valid : /wfj

    三、删除节点

    可以用过delete命令或者delateall命令对节点进行删除,使用delete删除节点时,如果该节点下存在子节点,该节点不允许删除。如果想删除某个节点极其所有后代节点,可以使用deleteall命令进行删除。部分老版本不支持deleteall命令,可以使用rmr path命令进行递归删除。删除节点和更新节点一样,也可以传入版本号,当传入的数据版本号和当前节点的数据版本不一致时,zookeeper不会执行删除操作。

    [zk: localhost:2181(CONNECTED) 7] delete /wfj
    Node not empty: /wfj
    [zk: localhost:2181(CONNECTED) 10] deleteall /wfj
    [zk: localhost:2181(CONNECTED) 24] delete -v 1 /wfj 
    version No is not valid : /wfj
    [zk: localhost:2181(CONNECTED) 25] delete -v 0 /wfj

    四、查看节点

    查看节点列表有 ls 和 ls2 两个命令,后者时前者的增强。不近可以查看指定路径下的所有节点,还可以查看当前节点的信息,zookeeper最新版本已经取消了对 ls2 命令的支持,提供了-s参数来取代ls2。-R参数递归显示子节点,-w参数为节点设置监视,此处我们只演示ls命令。

    [zk: localhost:2181(CONNECTED) 33] ls /wfj 
    [node1]
    [zk: localhost:2181(CONNECTED) 34] ls -R /wfj 
    /wfj
    /wfj/node1
    [zk: localhost:2181(CONNECTED) 35] ls -s /wfj 
    [node1]
    cZxid = 0x69
    ctime = Mon May 17 10:55:29 UTC 2021
    mZxid = 0x69
    mtime = Mon May 17 10:55:29 UTC 2021
    pZxid = 0x6a
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 1
    [zk: localhost:2181(CONNECTED) 36] ls -w /wfj 
    [node1]

     通过get查看节点数据,通过stat查看节点属性。在旧版本中,通过get命令即可以同时获取到节点属性和节点数据。新版本也可以通过 -s 参数同时获取节点属性和数据,-w参数为在数据更改上做监视。

    [zk: localhost:2181(CONNECTED) 38] get /wfj
    123
    [zk: localhost:2181(CONNECTED) 39] stat /wfj
    cZxid = 0x69
    ctime = Mon May 17 10:55:29 UTC 2021
    mZxid = 0x69
    mtime = Mon May 17 10:55:29 UTC 2021
    pZxid = 0x6a
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 1

    五、监听器

    zookeeper的具有监听机制,注册事件监听器可以在节点发生变化的时候向客户端发起通知。需要注意的是zookeeper的触发器是一次性的,即触发一次后立即失效。

    5.1、监听器get -w path

    使用get -w path注册的监听器能够在节点内容发生改变的时候,向客户端发起通知。在旧版本的zookeeper中,注册监听器的方式为 get path [watch]。在注册监听之后,在另一个会话set修改节点数据,可以看到客户端收到了server发来的节点变更消息

    [zk: localhost:2181(CONNECTED) 45] get -w /wfj
    123
    [zk: localhost:2181(CONNECTED) 46] 
    WATCHER::
    
    WatchedEvent state:SyncConnected type:NodeDataChanged path:/wfj

    5.2、监听器stat -w path

    使用stat -w path注册的监听器能够在节点状态发送改变的时候,向客户端发起通知。在旧版本的zookeeper中,注册监听器的方式为 stat path [watch]。在注册监听之后,在另一个会话set修改节点数据,可以看到客户端收到了server发来的节点变更消息

    [zk: localhost:2181(CONNECTED) 47] stat -w /wfj
    cZxid = 0x69
    ctime = Mon May 17 10:55:29 UTC 2021
    mZxid = 0x6c
    mtime = Mon May 17 12:02:27 UTC 2021
    pZxid = 0x6a
    cversion = 1
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 1
    [zk: localhost:2181(CONNECTED) 48] 
    WATCHER::
    
    WatchedEvent state:SyncConnected type:NodeDataChanged path:/wfj

    5.3、监听器ls -w path

    使用ls -w path注册的监听器能够监听该节点下所有子节点的增加和删除操作。在旧版本的zookeeper中,注册监听器的方式为 ls/ls2 path [watch]。在注册监听之后,在另一个会话删除子节点,可以看到客户端收到了server发来的节点变更消息 

    [zk: localhost:2181(CONNECTED) 49] ls -w /wfj
    [node1]
    [zk: localhost:2181(CONNECTED) 50] 
    WATCHER::
    
    WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/wfj

    zookeeper常用的客户端命令基本就这些,同时还存在这许多其他命令,但是日常会很少用到。可以登录zookeeper客户端之后,执行help来查看。

  • 相关阅读:
    ANSI C
    如何判断机器的endianness
    union的常见用法
    主流浏览器引擎
    用宏来求数组元素个数
    inode
    分区时"磁盘上没有足够的空间完成此操作"的解决方法
    删除OEM分区
    jquery加table布局 模仿实现FaceBook Dialog
    Container.DataItem使用
  • 原文地址:https://www.cnblogs.com/jkin/p/14752075.html
Copyright © 2011-2022 走看看