zookeeper快速入门三:zookeeper的基本操作

    科技2024-10-28  14

    在zookeeper的bin目录下,输入./zkServer.sh start和./zkCli.sh启动服务端和客户端,然后我们就可以进行zookeeper的基本操作了。如果是windows,请参考前面章节zookeeper快速入门一:zookeeper安装与启动

    目录

    一、节点的增删改查

    二、zookeeper的其他命令

    2.1   ls path:列出path下的文件

    2.2  stat path:查看节点状态

    2.3  ls2 path:列出path节点的子节点及状态

    三、其他


    一、节点的增删改查

    zookeeper节点的增删改查命令很简单,唯一需要注意的是create命令有两个参数,-s代表顺序节点,-e代表临时节点。

    我们先用create /temp 123命令创建一个名为temp的znode节点,123是这个节点保存的data值。

    用get /temp命令查看

    如果你输入的是get temp,那么会出现Command failed: java.lang.IllegalArgumentException: Path must start with /character错误,这是因为在zookeeper中,没有相对路径的概念,所有的节点都需要用绝对路径表示,也即所有节点名称都会以“/”开头。

    如果我们要创建临时节点,则给create命令增加一个-e的参数。

    修改temp节点的数据,set /temp  456

    再用get /temp查看

    可以看到,/temp节点的数据已经从123变成了456。在zookeeper中,对于数据的修改都是全量修改,没有只修改某一部分这种说法。这也是为什么zookeeper的修改命令是set而不是update的原因。

    需要注意的是,但我们修改了数据之后,可以看到mZxid(修改事务id)已经从原来的0X26变成了0x27。

    如果要删除某个节点,则用delete path即可。

    需要注意的是:

    set path data [version]命令,如果我们多次修改,会发现  dataVersion ,也就是数据版本,在不停得发生变化(自增)如果我们在set的时候手动去指定了版本号,就必须和上一次查询出来的结果一致,否则 就会报错。

    这个可以用于我们在修改节点数据的时候,保证我们修改前数据没被别人修改过。因为如果别人修改过了,我们这次修改是不会成功的

    delete path [version]

    删除指定节点数据,其version参数的作用于set指定一致

     

    二、zookeeper的其他命令

    2.1   ls path:列出path下的文件

    与linux命令类似,ls命令用于列出给定路径下的zookeeper节点

     

    2.2  stat path:查看节点状态

    我们查看持久节点temp和临时节点short的状态,主要不同是画红线部分,从ephemeralOwner的值可以判断这个节点是持久节点还是临时节点。0X0代表的是持久节点。如果节点为临时节点,那么它的值为这个节点拥有者的session ID。

     

    2.3  ls2 path:列出path节点的子节点及状态

    我们先给temp节点创建一个child1的子节点,接着用ls2 /temp查看它的子节点和状态。

     

    三、其他

    我们可以输入-h获取zookeeper的所有命令

    Processed: 0.032, SQL: 8