分布式协调服务之zookeeper(四)命令行操作

前言

上一章我们讲了zookeeper伪集群模式的搭建,这一章我们来用命令行对zookeeper进行一些操作,深入了解它的基本概念。

zookeeper数据结构

前面我们讲了zookeeper的基本概念。对于zookeeper的数据结构,其实我们已经有了初步的认识。
在zookeeper中,数据信息被保存在一个个数据节点上,这些节点被称为znode。znode是zookeeper中最小的数据单位,在znode下面又可以再挂znode,这样一层一层下去就形成了一个层次化的命名空间znode tree。它采用了类似文件系统的层级树状结构进行管理。见下图实例:
在这里插入图片描述
在zookeeper中,没一个数据节点都是一个znode,上图根目录下有两个节点,分别是app1和app2,其中,app1下面又有三个子节点,所有znode按层次化进行组织,形成一颗树,znode的节点路径标识方式和unix文件系统路径非常相似,都是由一些列使用斜杠(/)进行分割的路径表示,开发人员可以向这个节点写入数据,也可以在这个节点下面创建子节点。

命令行操作
下面,我们使用命令行来操作一下zookeeper。我们使用前面搭建好的zookeeper服务器。

  1. 通过客户端连接zookeeper服务器
###cd到zookeeper安装路径bin目录下,我的安装目录是/data/software/zookeeper-3.6.1
cd /data/software/zookeeper-3.6.1/bin
###连接本地zookeeper
./zkCli.sh

也可以使用./zkCli.sh -server ip:port 连接远程zookeeper服务器
连接成功后:在这里插入图片描述

  1. 查看节点信息
###查看跟节点信息
ls /

在这里插入图片描述
可以看到,当前根节点下只有一个zookeeper节点,这是zookeeper自己的节点,我们暂时不用关心。

  1. 创建节点
    使用create命令,可以创建一个zookeeper节点,命令如下:

create [-s][-e] path data acl
其中,-s指创建有序节点,-e创建临时节点,若不指定,则创建持久节点;acl用来进行权限控制。

  • 创建顺序节点
###在根目录下创建节点zk-test并赋值123
create -s /zk-test 123

在这里插入图片描述
可以看到,我们创建的顺序节点 /zk-test,zookeeper自动在后面添加了序列号。接着执行 ls /zk-test0000000000 查看新创建的节点,下面没有子节点了,所以显示[]。再通过get /zk-test0000000000 查看节点的数据,返回结果是123.

  • 创建临时节点
###创建临时节点并指定value
create -e /zk-temp 123
ls /zk-temp
get /zk-temp

在这里插入图片描述
临时节点在客户端会话结束后自动删除,下面我们使用quit命令退出客户端
在这里插入图片描述
再次连接服务端,使用ls /命令查看:
在这里插入图片描述
可以看到 /zk-temp节点已经消失。利用临时节点的这一特性,我们可以使用zookeeper实现分布式锁而不用担心客户端挂掉出现死锁的问题。

  • 创建持久节点
###创建持久节点
create /zk-persistent 123
###查看节点
ls /zk-persistent
###获取节点value
get /zk-persistent

在这里插入图片描述

  • 删除节点
    delete [-v version] path
    version是指当前节点的版本号
###删除节点
delete  /zk-persistent

删除节点的时候,如果节点存在子节点,需要先删除子节点,再删除父节点。

  • 使用ls -s path 查看节点状态

我们当前使用的zookeeper版本是3.6.1,是目前最新的版本,可以使用ls -s path 查看节点的状态信息,如果是老版本(3.5.0以前),请使用ls2 path查看节点状态信息。

查看根节点状态信息
ls -s /

在这里插入图片描述
cZxid:这是导致创建znode更改的事务ID。
mZxid:这是最后修改znode更改的事务ID。
pZxid:这是用于添加或删除子节点的znode更改的事务ID。
ctime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode创建时间。
mtime:表示从1970-01-01T00:00:00Z开始以毫秒为单位的znode最近修改时间。
dataVersion:表示对该znode的数据所做的更改次数。
cversion:这表示对此znode的子节点进行的更改次数。
aclVersion:表示对此znode的ACL进行更改的次数。
ephemeralOwner:如果znode是ephemeral类型节点,则这是znode所有者的 session ID。 如果znode不是ephemeral节点,则该字段设置为零。
dataLength:这是znode数据字段的长度。
numChildren:这表示znode的子节点的数量。

小结
这一章我们利用zookeeper命令行来对zookeeper进行了一些节点上的操作,对它节点的基本概念应该有了更清晰的认识,方便我们后面在讨论zookeeper使用场景的时候,能够更加快速的了解其原理。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值