我是靠谱客的博主 任性月饼,最近开发中收集的这篇文章主要介绍ZooKeeper客户端客户端命令和四字指令操作,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

客户端命令

连接客户端

查看帮助 help or config

查询指令 ls 或 ls2

获取指定节点内容get

创建节点create

退出 quit

修改数据set

删除执行delete 

四字指令

Zookeeper原理、安装、配置、场景全解析

Reference

 

客户端命令

启动ZooKeeper后直接利用 # ps aux | grep java命令查看进程的启动状态,显示如下:

root      3905  0.0  3.5 3534724 135996 ?      Sl   Oct25  10:44 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /root/task/zookeeper-3.4.6/bin/../build/classes:/root/task/zookeeper-3.4.6/bin/../build/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/root/task/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/root/task/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/root/task/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/root/task/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /root/task/zookeeper-3.4.6/bin/../conf/zoo.cfg

说明ZooKeeper是运行在JVM虚拟机上的

连接客户端

./zkCli.sh -timeout 5000  -server 127.0.0.1:2181   客户端与ZooKeeper建立链接

timeout:超时时间,单位毫秒

# sh ./zkCli.sh -timeout 5000  -server 127.0.0.1:2181 
Connecting to 127.0.0.1:2181
2019-11-03 18:33:14,573 [myid:] - INFO  [main:Environment@100] - Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
2019-11-03 18:33:14,576 [myid:] - INFO  [main:Environment@100] - Client environment:host.name=partner-dev
2019-11-03 18:33:14,576 [myid:] - INFO  [main:Environment@100] - Client environment:java.version=1.8.0_191
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.vendor=Oracle Corporation
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.class.path=/root/task/zookeeper-3.4.6/bin/../build/classes:/root/task/zookeeper-3.4.6/bin/../build/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/root/task/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/root/task/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/root/task/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/root/task/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../conf:
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.io.tmpdir=/tmp
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:java.compiler=<NA>
2019-11-03 18:33:14,579 [myid:] - INFO  [main:Environment@100] - Client environment:os.name=Linux
2019-11-03 18:33:14,580 [myid:] - INFO  [main:Environment@100] - Client environment:os.arch=amd64
2019-11-03 18:33:14,580 [myid:] - INFO  [main:Environment@100] - Client environment:os.version=3.10.0-957.5.1.el7.x86_64
2019-11-03 18:33:14,580 [myid:] - INFO  [main:Environment@100] - Client environment:user.name=root
2019-11-03 18:33:14,580 [myid:] - INFO  [main:Environment@100] - Client environment:user.home=/root
2019-11-03 18:33:14,580 [myid:] - INFO  [main:Environment@100] - Client environment:user.dir=/root/task/zookeeper-3.4.6/bin
2019-11-03 18:33:14,581 [myid:] - INFO  [main:ZooKeeper@438] - Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=5000 watcher=org.apache.zookeeper.ZooKeeperMain$MyWatcher@68de145
Welcome to ZooKeeper!
2019-11-03 18:33:14,631 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@975] - Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
JLine support is enabled
2019-11-03 18:33:14,706 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@852] - Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
2019-11-03 18:33:14,715 [myid:] - INFO  [main-SendThread(127.0.0.1:2181):ClientCnxn$SendThread@1235] - Session establishment complete on server 127.0.0.1/127.0.0.1:2181, sessionid = 0x16e02330ff60015, negotiated timeout = 5000

WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:2181(CONNECTED) 0]

可以看到这里已经连接成功,版本是3.4.6。

查看帮助 help or config

[zk: 127.0.0.1:2181(CONNECTED) 0] confg
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
[zk: 127.0.0.1:2181(CONNECTED) 1] 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

上面2个命令列出了,可以使用的指令

查询指令 ls 或 ls2

[zk: 127.0.0.1:2181(CONNECTED) 2] ls /
[zookeeper, $SaturnSelf]
[zk: 127.0.0.1:2181(CONNECTED) 3] ls2 /
[zookeeper, $SaturnSelf]
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0xf
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 3
cZxid:创建节点时的事务id
pZxid:子节点列表最后一次被修改的事务id
cversion:节点版本号
dataCersion:数据版本号
aclVerson:acl权限版本号

获取指定节点内容get

[zk: 127.0.0.1:2181(CONNECTED) 6] get /$SaturnSelf

cZxid = 0x3
ctime = Fri Oct 25 16:19:45 CST 2019
mZxid = 0x3
mtime = Fri Oct 25 16:19:45 CST 2019
pZxid = 0x6
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2

创建节点create

#在根目录创建了node_1节点,携带数据 123
[zk: 127.0.0.1:2181(CONNECTED) 7] create /node_1 123
Created /node_1

#创建了一个临时节点(-e),并且携带数据234
[zk: 127.0.0.1:2181(CONNECTED) 8] create -e /node_1/node_1_1 234
Created /node_1/node_1_1

#使用stat命令查看这个新建的临时节点,ephemeralOwner值不再是0,表示这个临时节点的版本号,如果是永久节点则其值为 0x0
[zk: 127.0.0.1:2181(CONNECTED) 9] stat /node_1/node_1_1
cZxid = 0xc850
ctime = Sun Nov 03 19:07:21 CST 2019
mZxid = 0xc850
mtime = Sun Nov 03 19:07:21 CST 2019
pZxid = 0xc850
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x16e02330ff60015
dataLength = 3
numChildren = 0

#通过使用-s参数,创建一个顺序节点,我们虽然指定的节点名是node_1_1,但是实际上,名称却是 node_1_10000000001
[zk: 127.0.0.1:2181(CONNECTED) 10] create -s /node_1/node_1_1 234
Created /node_1/node_1_10000000001
#我们重复执行
[zk: 127.0.0.1:2181(CONNECTED) 11] create -s /node_1/node_1_1 234
Created /node_1/node_1_10000000002

这个特性,我们可以利用一下,生成在分布式环境下的主键生成器-s 和 -e 可以同时使用

退出 quit

[zk: 127.0.0.1:2181(CONNECTED) 19] quit
Quitting...
2016-08-27 15:29:44,760 [myid:] - INFO  [main:ZooKeeper@684] - Session: 0x156cacb918b0000 closed
2016-08-27 15:29:44,763 [myid:] - INFO  [main-EventThread:ClientCnxn$EventThread@519] - EventThread shut down for session: 0x156cacb918b0000

这个时候如果重新登录,执行 ls /node_1,发现其子节点是空的,创建的node_1_1子节点不见了,那是因为之前创建的时候就已经指定了,我们创建的是一个临时节点。当客户端会话结束后,临时节点是会被删除了。

修改数据set

[zk: 127.0.0.1:2181(CONNECTED) 12] set /node_1 998
cZxid = 0xc84f
ctime = Sun Nov 03 19:07:07 CST 2019
mZxid = 0xc865
mtime = Sun Nov 03 19:12:31 CST 2019
pZxid = 0xc864
cversion = 3
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 3

如果我们多次修改,会发现  dataVersion ,也就是数据版本,在不停得发生变化(自增)

如果我们在set的时候手动去指定了版本号,就必须和上一次查询出来的结果一致,否则 就会报错。

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

删除执行delete 

#删除指定节点数据,其version参数的作用于set指定一致
delete /node_1/node_1_10000000001

整个节点全删除
注意:delete只能删除不包含子节点的节点,如果要删除的节点包含子节点,使用rmr命令

rmr /node_1

四字指令

ZooKeeper3.4.6支持某些特定的四字命令字母与其的交互。它们大多是查询命令,用来获取 ZooKeeper 服务的当前状态及相关信息。用户在客户端可以通过 telnet 或 nc 向 ZooKeeper 提交相应的命令。 其中stat、srvr、cons三个命令比较类似:"stat"提供服务器统计和客户端连接的一般信息;"srvr"只有服务的统计信息,"cons"提供客户端连接的更加详细的信息。 

 使用方式,例如在shell终端输入:echo mntr | nc localhost 2181 

#列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、
#当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数
[root@dev ~]# echo mntr | nc localhost 2181 
zk_version	3.4.6-1569965, built on 02/20/2014 09:09 GMT
zk_avg_latency	0
zk_max_latency	1024
zk_min_latency	0
zk_packets_received	1648454
zk_packets_sent	1697634
zk_num_alive_connections	6
zk_outstanding_requests	0
zk_server_state	standalone
zk_znode_count	543
zk_watch_count	314
zk_ephemerals_count	22
zk_approximate_data_size	39356
zk_open_file_descriptor_count	31
zk_max_file_descriptor_count	1048576
# 输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,
# session超时时间、serverId等
[root@dev ~]# echo conf | nc localhost 2181 
clientPort=2181
dataDir=/opt/logs/zookeeper-3.4.6/dataDir/version-2
dataLogDir=/opt/logs/zookeeper-3.4.6/dataLogDir/version-2
tickTime=2000
maxClientCnxns=60
minSessionTimeout=4000
maxSessionTimeout=40000
serverId=0
# 输出关于服务器的环境详细信息(不同于conf命令),比如host.name、
# java.version、java.home、user.dir=/data/zookeeper-3.4.6/bin之类信息
[root@dev ~]# echo envi | nc localhost 2181 
Environment:
zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT
host.name=partner-dev
java.version=1.8.0_191
java.vendor=Oracle Corporation
java.home=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64/jre
java.class.path=/root/task/zookeeper-3.4.6/bin/../build/classes:/root/task/zookeeper-3.4.6/bin/../build/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-log4j12-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/slf4j-api-1.6.1.jar:/root/task/zookeeper-3.4.6/bin/../lib/netty-3.7.0.Final.jar:/root/task/zookeeper-3.4.6/bin/../lib/log4j-1.2.16.jar:/root/task/zookeeper-3.4.6/bin/../lib/jline-0.9.94.jar:/root/task/zookeeper-3.4.6/bin/../zookeeper-3.4.6.jar:/root/task/zookeeper-3.4.6/bin/../src/java/lib/*.jar:/root/task/zookeeper-3.4.6/bin/../conf:
java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.io.tmpdir=/tmp
java.compiler=<NA>
os.name=Linux
os.arch=amd64
os.version=3.10.0-957.5.1.el7.x86_64
user.name=root
user.home=/root
user.dir=/root/task/zookeeper-3.4.6/bin
# 输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节# 点总数、延迟。 所有客户端的列表。
[root@dev ~]# echo stat | nc localhost 2181 
Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
 /10.10.14.91:50678[1](queued=0,recved=174416,sent=221758)
 /10.10.14.91:50802[1](queued=0,recved=987025,sent=987025)
 /127.0.0.1:45824[1](queued=0,recved=1647,sent=1647)
 /10.10.14.91:25795[1](queued=0,recved=86203,sent=86453)
 /10.10.14.91:50676[1](queued=0,recved=135382,sent=135383)
 /127.0.0.1:51774[0](queued=0,recved=1,sent=0)

Latency min/avg/max: 0/0/1024
Received: 1648645
Sent: 1697843
Connections: 6
Outstanding: 0
Zxid: 0xc889
Mode: standalone
Node count: 543
# 列出未经处理的会话和临时节点(只在leader上有效)
[root@dev ~]# echo dump | nc localhost 2181 
SessionTracker dump:
Session Sets (7):
0 expire at Sun Nov 03 19:21:06 CST 2019:
0 expire at Sun Nov 03 19:21:08 CST 2019:
1 expire at Sun Nov 03 19:21:10 CST 2019:
	0x16e02330ff60015
0 expire at Sun Nov 03 19:21:14 CST 2019:
2 expire at Sun Nov 03 19:21:20 CST 2019:
	0x16e02330ff60001
	0x16e02330ff60002
1 expire at Sun Nov 03 19:21:22 CST 2019:
	0x16e02330ff60011
1 expire at Sun Nov 03 19:21:26 CST 2019:
	0x16e02330ff60000
ephemeral nodes dump:
Sessions with Ephemerals (4):
0x16e02330ff60001:
	/www.baidu.com/$SaturnExecutors/leader/host
0x16e02330ff60011:
	/www.baidu.com/$Jobs/Passive_INTransferDataJob/leader/election/host
	/www.baidu.com/$Jobs/Passive_IDTransferDataJob/leader/election/host
	/www.baidu.com/$SaturnExecutors/executors/dev/ip
	/www.baidu.com/$Jobs/IDInstallDataJob/leader/election/host
	/www.baidu.com/$Jobs/IDTransferAllDataJob/servers/dev/status
	/www.baidu.com/$Jobs/OtherTransferAllDataJob/leader/election/host
	/www.baidu.com/$Jobs/Passive_OtherTransferDataJob/servers/dev/status
	/www.baidu.com/$Jobs/OtherInstallDataJob/servers/dev/status
	/www.baidu.com/$Jobs/IDTransferAllDataJob/leader/election/host
	/www.baidu.com/$Jobs/INTransferAllDataJob/leader/election/host
	/www.baidu.com/$Jobs/OtherInstallDataJob/leader/election/host
	/www.baidu.com/$Jobs/Passive_IDTransferDataJob/servers/dev/status
	/www.baidu.com/$Jobs/Passive_INTransferDataJob/servers/dev/status
	/www.baidu.com/$Jobs/INInstallDataJob/servers/dev/status
	/www.baidu.com/$Jobs/IDInstallDataJob/servers/dev/status
	/www.baidu.com/$Jobs/INTransferAllDataJob/servers/dev/status
	/www.baidu.com/$Jobs/OtherTransferAllDataJob/servers/dev/status
	/www.baidu.com/$Jobs/INInstallDataJob/leader/election/host
	/www.baidu.com/$Jobs/Passive_OtherTransferDataJob/leader/election/host
0x16e02330ff60000:
	/$SaturnSelf/saturn-console/dashboard/leader/host
0x16e02330ff60015:
	/node_1/node_1_1
# 通过session分组,列出watch的所有节点,它的输出是一个与 watch 相关的
# 会话的节点列表。如果watches数量很大的话,将会产生很大的开销,会影响性能,小# 心使用
[root@dev ~]# echo wchc | nc localhost 2181 
0x16e02330ff60001
	/www.baidu.com/$Jobs/IDInstallDataJob/servers/partner/sharding
	/www.baidu.com/$Jobs/IDTransferAllDataJob/servers/partner/sharding
	/www.baidu.com/$Jobs/Passive_INTransferDataJob/servers/partner/ip
	/www.baidu.com/$Jobs/INTransferDataJob/config/enabled
	/www.baidu.com/$Jobs/IDInstallDataJob/servers/partner/processSuccessCount
	/www.baidu.com/$Jobs/IDTransferAllDataJob/servers/partner/version
	/www.baidu.com/$Jobs/OtherInstallDataJob/config/forceShard
	/www.baidu.com/$Jobs/OtherInstallDataJob/servers/partner
	/www.baidu.com/$Jobs/IDTransferAllDataJob/servers/partner/status
	/www.baidu.com/$Jobs/IDTransferAllDataJob/servers
	/www.baidu.com/$Jobs/Passive_IDTransferDataJob/servers/partner/processSuccessCount
	/www.baidu.com/$Jobs/OtherTransferAllDataJob/servers/partner/sharding
	/www.baidu.com/$Jobs/Passive_OtherTransferDataJob
	......
# 列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数
[root@dev ~]# echo wchs | nc localhost 2181 
3 connections watching 262 paths
Total watches:281

更多四字指令请参考:

命令         示例描述
confecho conf | nc localhost 2181

(New in 3.3.0)输出相关服务配置的详细信息。比如端口、zk数据及日志配置路径、最大连接数,

session超时时间、serverId等

consecho cons | nc localhost 2181

(New in 3.3.0)列出所有连接到这台服务器的客户端连接/会话的详细信息。包括“接受/发送”的包数量、

session id 、操作延迟、最后的操作执行等信息。

crstecho crst | nc localhost 2181(New in 3.3.0)重置当前这台服务器所有连接/会话的统计信息
dumpecho dump | nc localhost 2181列出未经处理的会话和临时节点(只在leader上有效)。
enviecho envi | nc localhost 2181

输出关于服务器的环境详细信息(不同于conf命令),比如host.name、java.version、java.home、

user.dir=/data/zookeeper-3.4.6/bin之类信息

ruokecho ruok | nc localhost 2181测试服务是否处于正确运行状态。如果正常返回"imok",否则返回空。
srstecho srst | nc localhost 2181重置服务器的统计信息
srvrecho srvr | nc localhost 2181

(New in 3.3.0)输出服务器的详细信息。zk版本、接收/发送包数量、连接数、

模式(leader/follower)、节点总数。

statecho stat | nc localhost 2181

输出服务器的详细信息:接收/发送包数量、连接数、模式(leader/follower)、节点总数

、延迟。 所有客户端的列表。

wchsecho wchs | nc localhost 2181(New in 3.3.0)列出服务器watches的简洁信息:连接总数、watching节点总数和watches总数
wchcecho wchc | nc localhost 2181

(New in 3.3.0)通过session分组,列出watch的所有节点,它的输出是一个与 watch 相关的

会话的节点列表。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用。

wchpecho wchp | nc localhost 2181

(New in 3.3.0)通过路径分组,列出所有的 watch 的session id信息。它输出一个与 session

相关的路径。如果watches数量很大的话,将会产生很大的开销,会影响性能,小心使用。

mntrecho mntr | nc localhost 2181

(New in 3.4.0)列出集群的健康状态。包括“接受/发送”的包数量、操作延迟、

当前服务模式(leader/follower)、节点总数、watch总数、临时节点总数。

Zookeeper原理、安装、配置、场景全解析

框架精粹系列19---Zookeeper 之 初识

框架精粹系列20---Zookeeper 之 原理简析

框架精粹系列21---Zookeeper 之 安装和配置

框架精粹系列22---Zookeeper 之 典型应用场景

Reference

https://www.cnblogs.com/sherrykid/p/5813148.html

https://www.cnblogs.com/kuku0223/p/8428341.html

https://blog.csdn.net/shenlan211314/article/details/6187029

 

优质连接

Zookeeper系列一:Zookeeper基础命令操作

 

 

最后

以上就是任性月饼为你收集整理的ZooKeeper客户端客户端命令和四字指令操作的全部内容,希望文章能够帮你解决ZooKeeper客户端客户端命令和四字指令操作所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部