zookeeper客户端命令操作

本文介绍了Zookeeper客户端的启动及各种操作,包括查看所有命令、列出节点内容、创建普通和临时节点、设置与获取节点数据、监听节点变化、删除节点等,展示了Zookeeper节点的详细信息和客户端交互过程。

上一章开启了zookeeper的服务器端,然后来看看zookeeper的客户端。

  1. 启动客户端
    [root@host-10-75-169-14 zookeeper-3.4.14]# ./bin/zkCli.sh
  2. 显示所有操作命令
    [zk: localhost:2181(CONNECTED) 0] help
    ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit
    getAcl path
    close
    connect host:port
  3. 查看当前znode中所包含的内容
    [zk: localhost:2181(CONNECTED) 1] ls /
    [zookeeper]
  4. 查看当前节点详细数据
    [zk: localhost:2181(CONNECTED) 2] ls2 /
    [zookeeper]
    cZxid = 0x0
    ctime = Thu Jan 01 08:00:00 CST 1970
    mZxid = 0x0
    mtime = Thu Jan 01 08:00:00 CST 1970
    pZxid = 0x0
    cversion = -1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 1
  5. 创建普通节点
    [zk: localhost:2181(CONNECTED) 5] create /team “Art”
    Created /team
    [zk: localhost:2181(CONNECTED) 6] create /team/dev “worker”
    Created /team/dev
    [zk: localhost:2181(CONNECTED) 7] ls /
    [team, zookeeper]
    [zk: localhost:2181(CONNECTED) 8] ls /team
    [dev]
  6. 获取节点的值 get /sanguo/shuguo
    [zk: localhost:2181(CONNECTED) 9] get /team/dev
    worker
    cZxid = 0x3
    ctime = Wed Sep 04 13:13:24 CST 2019
    mZxid = 0x3
    mtime = Wed Sep 04 13:13:24 CST 2019
    pZxid = 0x3
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 6
    numChildren = 0
    [zk: localhost:2181(CONNECTED) 10] get /team
    Art
    cZxid = 0x2
    ctime = Wed Sep 04 13:12:37 CST 2019
    mZxid = 0x2
    mtime = Wed Sep 04 13:12:37 CST 2019
    pZxid = 0x3
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 3
    numChildren = 1
  7. 创建短暂(临时)节点
    [zk: localhost:2181(CONNECTED) 11] create -e /team/test “tester”
    Created /team/test
    [zk: localhost:2181(CONNECTED) 12] ls /team
    [dev, test]
    [zk: localhost:2181(CONNECTED) 13] get /team/test
    tester
    cZxid = 0x4
    ctime = Wed Sep 04 13:15:33 CST 2019
    mZxid = 0x4
    mtime = Wed Sep 04 13:15:33 CST 2019
    pZxid = 0x4
    cversion = 0
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x10004aeae0d0000
    dataLength = 6
    numChildren = 0
    退出并重新启动客户端,/team/test将丢失
    [zk: localhost:2181(CONNECTED) 14] quit
    Quitting…
    2019-09-04 13:16:43,718 [myid:] - INFO [main:ZooKeeper@693] - Session: 0x10004aeae0d0000 closed
    2019-09-04 13:16:43,720 [myid:] - INFO [main-EventThread:ClientCnxn$EventThread@522] - EventThread shut down for session: 0x10004aeae0d0000
    [root@host-10-75-169-14 zookeeper-3.4.14]# ./bin/zkCli.sh
    [zk: localhost:2181(CONNECTED) 0] ls /team
    [dev]
  8. 创建带有序号的节点,其序号会自动递增,因为team中已有dev,所以test的序号从2开始
    [zk: localhost:2181(CONNECTED) 1] create -s /team/test “tester1”
    Created /team/test0000000002
    [zk: localhost:2181(CONNECTED) 2] create -s /team/test “tester1”
    Created /team/test0000000003
  9. 修改节点数据值
    [zk: localhost:2181(CONNECTED) 3] set /team/dev “developer”
    cZxid = 0x3
    ctime = Wed Sep 04 13:13:24 CST 2019
    mZxid = 0x9
    mtime = Wed Sep 04 13:20:33 CST 2019
    pZxid = 0x3
    cversion = 0
    dataVersion = 1
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 9
    numChildren = 0
  10. 节点值的变化监听 get /team/dev watch 一次有效
    需多客户端配合测试,我在另一套机器上配置了集群,共有三台zookeeper服务端,分别是walter101,walter102,walter103。依次开启walter101,walter102,walter103上的zookeeper,则walter102为leader,walter101和walter103为follower。
    1. 在walter102上对节点进行查看并注册监听:
      [zk: localhost:2181(CONNECTED) 1] get /team/dev watch
      developer
      cZxid = 0x400000003
      ctime = Fri Sep 06 11:10:47 EDT 2019
      mZxid = 0x400000003
      mtime = Fri Sep 06 11:10:47 EDT 2019
      pZxid = 0x400000003
      cversion = 0
      dataVersion = 0
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 9
      numChildren = 0
    2. 在walter101上对该节点的值进行修改:
      [zk: localhost:2181(CONNECTED) 6] set /team/dev ‘walter101’
      cZxid = 0x400000003
      ctime = Fri Sep 06 11:10:47 EDT 2019
      mZxid = 0x500000003
      mtime = Fri Sep 06 19:35:35 EDT 2019
      pZxid = 0x400000003
      cversion = 0
      dataVersion = 1
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 9
      numChildren = 0
    3. 则在walter102上会自动提醒节点变化:
      [zk: localhost:2181(CONNECTED) 2]
      WATCHER::
      WatchedEvent state:SyncConnected type:NodeDataChanged path:/team/dev
    4. 此时在walter102上该节点的值为:
      [zk: localhost:2181(CONNECTED) 2] get /team/dev
      walter101
      cZxid = 0x400000003
      ctime = Fri Sep 06 11:10:47 EDT 2019
      mZxid = 0x500000003
      mtime = Fri Sep 06 19:35:35 EDT 2019
      pZxid = 0x400000003
      cversion = 0
      dataVersion = 1
      aclVersion = 0
      ephemeralOwner = 0x0
      dataLength = 9
      numChildren = 0
  11. 节点的子节点变化监听(路径变化) ls /team watch 一次有效
    需多客户端配合测试
    1. 在walter102上查看/team下的节点,并注册监听:
      [zk: localhost:2181(CONNECTED) 4] ls /team watch
      [dev, test0000000002, test0000000003]
    2. 在walter101上,添加一个属于/team的一个节点:
      [zk: localhost:2181(CONNECTED) 7] create /team/SM ‘scrum master’
      Created /team/SM
    3. 则在walter102上,会自动提醒/team有路径变化:
      [zk: localhost:2181(CONNECTED) 5]
      WATCHER::
      WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/team
    4. 在walter102上,查看/team下的节点为:
      [zk: localhost:2181(CONNECTED) 5] ls /team
      [SM, dev, test0000000002, test0000000003]
  12. 删除节点
    [zk: localhost:2181(CONNECTED) 4] delete /team/dev
    [zk: localhost:2181(CONNECTED) 5] ls /team
    [test0000000002, test0000000003]
  13. 递归删除节点
    [zk: localhost:2181(CONNECTED) 6] rmr /team
    [zk: localhost:2181(CONNECTED) 7] ls /
    [zookeeper]
  14. 查看节点状态
    [zk: localhost:2181(CONNECTED) 8] stat /
    cZxid = 0x0
    ctime = Thu Jan 01 08:00:00 CST 1970
    mZxid = 0x0
    mtime = Thu Jan 01 08:00:00 CST 1970
    pZxid = 0xd
    cversion = 1
    dataVersion = 0
    aclVersion = 0
    ephemeralOwner = 0x0
    dataLength = 0
    numChildren = 1

Stat结构体:

  1. czxid-创建节点的事务zxid,每次修改zookeeper状态都会收到一个zxid的时间戳
  2. ctime-被创建的毫秒数(从1970年开始)
  3. mzxid-最后更新的事务zxid
  4. mtime-最后修改的毫秒数(从1970年开始)
  5. pZxid-最后更新的子节点
  6. cversion-子节点变化号,znode子节点的修改次数
  7. dataversion-数据变化号
  8. aclVersion-访问控制列表的变化号
  9. ephemeralOwner-如果是临时节点,这个是znode拥有者的session id,如果不是临时节点则为0
  10. dataLength-znode的数据长度
  11. numChildren -znode子节点数量
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值