一、命令
ZooKeeper 支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。
ZooKeeper 四字命令 | 命令描述 |
---|---|
conf | 输出相关服务配置的详细信息。 |
cons | 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。 |
dump | 列出未经处理的会话和临时节点。 |
envi | 输出关于服务环境的详细信息(区别于 conf 命令)。 |
reqs | 列出未经处理的请求 |
ruok | 测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。 |
stat | 输出关于性能和连接的客户端的列表。 |
wchs | 列出服务器 watch 的详细信息。 |
wchc | 通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。 |
wchp | 通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。 |
二、Zookeeper的简单操作
2.1 Zookeeper的shell操作
2.1.1 Zookeeper命令工具
再启动Zookeeper服务之后,输入以下命令,连接到Zookeeper服务: zkCli.sh -server ip:2181
1、客户点连接 zkCli.sh -server localhost:2181 下图表示连接成功
(1) 使用ls命令查看当前Zookeeper中所包含的内容:ls /
(2) 创建一个新的Znode节点"zk",以及和它相关字符,执行命令:create /zk "my first zk",默认是不带编号的
创建带编号的持久性节点(-s)"zkbb",create -s /zkbb "zkbb" :
创建不带编号的临时节点(-e)"cc" : create -e /cc "cc"
创建带编号的临时节点"dd" : create -s -e /dd "dd"
再次使用ls命令来查看现在Zookeeper的中所包含的内容:ls /
(4) 使用get命令来确认第二步中所创建的Znode是否包含我们创建的字符串,执行命令:get /zk
(5) 接下来通过set命令来对zk所关联的字符串进行设置,执行命令:set /zk "haha123"
(6) 再次使用get命令来查看,上次修改的内容,执行命令:get /zk
(7) 下面我们将刚才创建的Znode删除,执行命令:delete /zkbb0000000002
(9) 退出,执行命令:quit
查看一个文件的状态信息 : stat /zk
详细解释:
zxid: 一个事务编号,zookeeper集群内部的所有事务,都有一个全局的唯一的顺序的编号
它由两部分组成: 就是一个 64位的长整型 long
高32位: 用来标识leader关系是否改变,如 0x2
低32位: 用来做当前这个leader领导期间的全局的递增的事务编号,如 00000009
状态属性 | 说明 |
cZxid | 数据节点创建时的事务ID |
ctime | 数据节点创建时的时间 |
mZxid | 数据节点最后一次更新时的事务ID |
mtime | 数据节点最后一次更新时的时间 |
pZxid | 数据节点的子节点列表最后一次被修改(是子节点列表变更,而不是子节点内容变更)时的事务ID |
cversion | 子节点的版本号 |
dataVersion | 数据节点的版本号 |
aclVersion | 数据节点的ACL版本号 |
ephemeralOwner | 如果节点是临时节点,则表示创建该节点的会话的SessionID;如果节点是持久节点,则该属性值为0 |
dataLength | 数据内容的长度 |
numChildren | 数据节点当前的子节点个数 |
(1)修改节点zk的数据,mZxid、dataVersion、dataLength 存储信息发生变化
(2)创建新的节点b,状态信息都会发生变化,zxid的事物ID也会增加
(3)在a节点下面新增节点c,pZxid、cversion、numChildren 发生改变