一、分布式集群安装部署
二、客户端命令行操作
不同Zookeeper版本命令也不一样,本文以ZooKeeper:3.6.2为主。
所有命令:
常用命令介绍:
命令基本语法 | 功能描述 |
---|---|
显示所有操作命令,此命令已经无效,改为输入命令错误直接列出所有命令。 | |
ls [-s] [-w] [-R] path | 使用 ls 命令来查看当前znode中所包含的内容。-s 查看当前节点数据并能看到更新次数等数据。添加一个 watch(监视器)监视该节点子节点的变化 |
create [-s] [-e] [-c] [-t ttl] path [data] [acl] | 普通创建 , -s 含有序列 ,-e 临时(重启或者超时消失) 。acl (Access Control List),来决定谁可以对znode做哪些操作。 |
get [-s] [-w] path | 获得节点的值。-s 获得具体信息。-w 添加一个 watch(监视器)监视该节点的值变化 |
set [-s] [-v version] path data | 设置节点具体的值 |
stat [-w] path | 查看节点状态。-w 添加一个 watch(监视器),如果节点内容发生改变,会产生 NodeDataChanged 事件;如果删除节点,会产生 NodeDeleted 事件。 |
delete [-v version] path | 删除节点 |
redo cmdno | 重复之前的命令,cmdno 就是方括号里面最后的数字,每次执行命令都会自增。 |
close | 关闭连接 |
connect | 打开连接 :connect host:port |
quit | 直接退出当前的 zkCli 命令行。 |
sync path | 强制同步。sync方法会强制客户端所连接的服务器状态与leader的状态同步,这样在读取 path 的值就是最新的值 |
version | 获取版本号 |
调用delete与set,如果该节点有版本号, 则调用delete与set的时候也应该加-v 版本号来操作。
-
启动客户端
# bin/zkCli.sh
启动成功
-
显示所有操作命令
help
-
查看当前znode中所包含的内容
ls /
-
查看当前节点具体信息
ls -s /
节点信息介绍:- cZxid: ZNode节点创建时的事务id(Transaction id)。
- ctime: ZNode节点创建时的时间戳。
- mZxid: ZNode 节点修改时的事务id,与子节点无关。
- mtime: ZNode节点最后一次更新时的时间戳。
- pZxid: ZNode节点的子节点的最后一次创建或者修改的时间,与子孙节点无关。
- cversion: 子节点版本号。
- dataVersion: 数据版本号。
- aclVersion: 节点的ACL权限修改版本号。
- dataLength: 该节点的数据长度。
- numChildren: 该节点拥有子节点的数量。
事务id记录节点的状态,ZooKeeper每一次改变都对应着一个递增的事务id(Transaction id),该id称为Zxid, 它是全局有序的,每次ZooKeeper的更新操作都会产生一个新的Zxid,Zxid不仅仅是一个唯一的事务id,它还具有递增性。如果两个Zxid存在 zxid1<zxid2,那么说明Zxid1事务变化发生在Zxid2事务变化之前。
-
创建普通节点
-
获取节点的值
此时可以看到 /animal节点有一个子节点,/animal/dog节点的长度为6. -
创建短暂节点
create -e ...
重新连接客户端后,发现创建的临时节点没了。
-
创建带有序号的节点
create -s ....
-
修改节点的值
之前创建/user节点并没有赋值,现在给 该节点赋值。
ls -R /
用来获取目录树形结构
-
全局数据一致
每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
zk1、zk2、zk3数据一样。
-
节点值变化监听
zk1监听/user节点,用zk2修改该节点的值。
get -w /user
,set /user "zhang"
发现zk1监听/user后,zk2修改该节点的值后zk1会监听到该节点的值发生变化。当zk2再次修改该节点的值,zk1不能监听到。
所以对节点的监听只生效一次。 -
节点的子节点变化监听(路径变化)
zk1 对/user节点的子节点变化进行监听ls -w /user
.
zk2 在/user节点下创建子节点create /user/zxg "zhang"
zk1监听到了变化。
-
删除节点
-
删除全部节点
delete
删除的节点如果要删除的节点有子节点,不能删除。
deleteall path
可删除该节点以及该节点的所有子节点。
-
查看节点状态
stat path
-
重复之前的命令
redo cmdno
cmdno 就是方括号里面最后的数字,每次执行命令都会自增。
(二) Zookeeper内部原理之选举机制、Stat结构体与监听器原理