Zookeeper基本命令解析
ZooKeeper -server host:port -client-configuration properties-file cmd args
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
addauth scheme auth
一、整体命令格式
-
ZooKeeper -server host:port -client -configuration properties - file cmd args
- 含义
- 这是ZooKeeper客户端启动并执行命令的一种格式。
-server host:port
:指定要连接的ZooKeeper服务器的主机名(host
)和端口号(port
)。例如,如果ZooKeeper服务器运行在本地的2181端口,可以写成-server localhost:2181
。-client -configuration properties - file
:用于指定客户端配置属性文件。这个文件包含了一些客户端的配置信息,如连接超时时间、会话超时时间等相关设置。cmd args
:表示要执行的ZooKeeper命令(cmd
)以及命令所需的参数(args
)。例如,ls /
是一个命令(ls
为查看节点命令)和参数(/
为要查看的节点路径)的组合。
- 含义
二、addWatch相关命令
-
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
- 含义
- 这个命令用于对指定的
path
(路径)添加观察(watch)。 [-m mode]
:mode
是可选参数,有两种模式可供选择。PERSISTENT
模式表示持久化观察,这种观察在被触发一次之后不会自动删除,仍然会持续观察节点的变化;PERSISTENT_RECURSIVE
模式是持久化递归观察,它不仅会持续观察指定节点的变化,还会观察该节点下所有子节点的变化,默认情况下如果不指定模式,就是PERSISTENT_RECURSIVE
模式。例如,如果执行addWatch -m PERSISTENT /my/node
,就会对/my/node
以持久化模式添加观察。
- 这个命令用于对指定的
- 含义
三、addauth相关命令
-
addauth scheme auth
- 含义
- 这个命令用于添加身份验证信息。
scheme
:是身份验证的方案类型。例如,在ZooKeeper中可以使用digest
方案,这是一种基于用户名和密码的摘要认证方式。auth
:是与所选认证方案相关的认证数据。如果是digest
方案,可能是类似username:password
经过摘要算法处理后的字符串。例如,如果用户名是user1
,密码是pass1
,经过摘要处理后得到的字符串作为auth
参数,执行addauth digest <摘要后的字符串>
来向ZooKeeper服务器提供身份验证信息,以便进行后续权限相关的操作。
- 含义
close
config [-c] [-w] [-s]
connect host:port
create [-s] [-e] [-c] [-t ttl] path [data] [acl]
delete [-v version] path
deleteall path [-b batch size]
delquota [-n|-b|-N|-B] path
get [-s] [-w] path
getAcl [-s] path
getAllChildrenNumber path
getEphemerals path
history
listquota path
ls [-s] [-w] [-R] path
printwatches on|off
quit
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]*]] | [-add serverId=host:port1:port2;port3[,...]]* [-remove serverId[,...]*]
redo cmdno
removewatches path [-c|-d|-a] [-l]
set [-s] [-v version] path data
setAcl [-s] [-v version] [-R] path acl
setquota -n|-b|-N|-B val path
stat [-w] path
sync path
version
whoami
一、基础连接与操作相关命令
-
close
- 含义
- 用于关闭当前与ZooKeeper服务器的连接。当执行此命令后,客户端将断开与ZooKeeper服务器的连接,不再能够发送请求或接收响应。
- 含义
-
config
- [-c] [-w] [-s]
- 含义
- 用于获取或设置ZooKeeper服务器的配置信息。
-c
表示输出配置的变化信息;-w
表示在配置发生变化时等待通知;-s
表示输出配置信息的摘要。通过这个命令,可以查看和管理ZooKeeper服务器的一些运行参数,如tickTime、initLimit、syncLimit等。
- 用于获取或设置ZooKeeper服务器的配置信息。
- 含义
- [-c] [-w] [-s]
-
connect host:port
- 含义
- 用于连接到指定的ZooKeeper服务器。其中
host
是ZooKeeper服务器的主机名或IP地址,port
是ZooKeeper服务器的端口号(通常为2181)。如果当前客户端已经连接到一个服务器,执行此命令可以切换连接到其他服务器。
- 用于连接到指定的ZooKeeper服务器。其中
- 含义
二、数据节点操作相关命令
- create [-s] [-e] [-c] [-t ttl] path [data] [acl]
- [-s] [-e] [-c] [-t ttl]
- 含义
-s
表示创建顺序节点。顺序节点在ZooKeeper中会根据创建顺序在节点名后自动添加一个单调递增的序号。-e
表示创建临时节点,临时节点的生命周期与创建它的客户端会话相关,当客户端会话结束时,临时节点会被自动删除。-c
表示创建容器节点(在某些ZooKeeper版本中支持)。-t ttl
用于设置节点的生存时间(Time - To - Live),超过这个时间节点将被自动删除(如果支持)。
- 含义
-
path [data] [acl]
- 含义
path
是要创建的节点的路径,例如/my/node
。data
是要存储在节点中的数据,可以是任意字节数组(在命令行中通常以字符串形式表示)。acl
是访问控制列表(Access Control List),用于定义对节点的访问权限。
- 含义
- [-s] [-e] [-c] [-t ttl]
-
delete [-v version] path
- [-v version]
- 含义
- 用于删除指定路径的节点。
-v version
表示指定节点的版本号,如果不指定版本号,将删除最新版本的节点。版本号机制有助于在并发操作时确保数据的一致性,只有当指定的版本号与节点当前版本号匹配时,删除操作才会成功。
- 用于删除指定路径的节点。
- 含义
- [-v version]
-
deleteall path [-b batch size]
- [-b batch size]
- 含义
- 用于递归删除指定路径及其所有子节点。
-b batch size
表示批量删除的大小,在某些情况下可以提高删除操作的效率,特别是当子节点数量较多时。
- 用于递归删除指定路径及其所有子节点。
- 含义
- [-b batch size]
-
get [-s] [-w] path
- [-s] [-w]
- 含义
- 用于获取指定路径节点的数据内容。
-s
表示同时获取节点的状态信息,如节点的创建时间、修改时间、版本号等。-w
表示对节点设置数据变更的观察(watch),当节点数据发生变化时,客户端将收到通知。
- 用于获取指定路径节点的数据内容。
- 含义
- [-s] [-w]
-
set [-s] [-v version] path data
- [-s] [-v version]
- 含义
- 用于设置指定路径节点的数据内容。
-s
表示同时获取节点的状态信息更新(如更新后的版本号等)。-v version
表示指定节点的版本号,只有当指定的版本号与节点当前版本号匹配时,设置操作才会成功,这有助于防止数据的并发冲突。
- 用于设置指定路径节点的数据内容。
- 含义
- [-s] [-v version]
三、权限与配额相关命令
-
addauth scheme auth
- 含义
- 用于添加身份验证信息。
scheme
是身份验证的方案,如digest
(基于用户名和密码的摘要认证)等,auth
是与认证方案相关的认证数据。通过这个命令,客户端可以向ZooKeeper服务器提供身份验证信息,以便进行权限相关的操作。
- 用于添加身份验证信息。
- 含义
-
getAcl [-s] path
- [-s]
- 含义
- 用于获取指定路径节点的访问控制列表(ACL)。
-s
表示同时获取节点的状态信息。ACL定义了哪些用户或用户组对节点具有何种操作权限,如读、写、创建子节点等权限。
- 用于获取指定路径节点的访问控制列表(ACL)。
- 含义
- [-s]
-
setAcl [-s] [-v version] [-R] path acl
- [-s] [-v version] [-R]
- 含义
- 用于设置指定路径节点的访问控制列表(ACL)。
-s
表示同时获取节点的状态信息更新。-v version
表示指定节点的版本号,只有当指定的版本号与节点当前版本号匹配时,设置操作才会成功。-R
表示递归设置ACL,即对指定路径节点及其所有子节点设置相同的ACL。
- 用于设置指定路径节点的访问控制列表(ACL)。
- 含义
- [-s] [-v version] [-R]
-
delquota [-n|-b|-N|-B] path
- [-n|-b|-N|-B]
- 含义
- 用于删除指定路径节点的配额限制。
-n
表示删除节点数量的配额限制;-b
表示删除字节数的配额限制;-N
表示删除节点数量的非递归配额限制;-B
表示删除字节数的非递归配额限制。配额限制可以用来控制节点的数量或数据量,防止节点过度增长。
- 用于删除指定路径节点的配额限制。
- 含义
- [-n|-b|-N|-B]
-
setquota -n|-b|-N|-B val path
- -n|-b|-N|-B val
- 含义
- 用于设置指定路径节点的配额限制。
-n
表示设置节点数量的配额;-b
表示设置字节数的配额;-N
表示设置非递归的节点数量配额;-B
表示设置非递归的字节数配额。val
是要设置的配额值。
- 用于设置指定路径节点的配额限制。
- 含义
- -n|-b|-N|-B val
四、观察(watch)与监控相关命令
-
addWatch [-m mode] path # optional mode is one of [PERSISTENT, PERSISTENT_RECURSIVE] - default is PERSISTENT_RECURSIVE
- [-m mode]
- 含义
- 用于对指定路径的节点添加观察(watch)。
mode
可以是PERSISTENT
(持久化观察,即使触发一次观察后也不会自动删除)或PERSISTENT_RECURSIVE
(持久化递归观察,对节点及其所有子节点进行持久化观察,默认模式)。当节点发生符合观察条件的变化时(如数据变化、子节点变化等),客户端将收到通知。
- 用于对指定路径的节点添加观察(watch)。
- 含义
- [-m mode]
-
printwatches on|off
- 含义
- 用于开启或关闭观察(watch)的打印功能。当设置为
on
时,客户端在收到观察通知时会打印相关信息;当设置为off
时,则不会打印观察通知信息。
- 用于开启或关闭观察(watch)的打印功能。当设置为
- 含义
-
removewatches path [-c|-d|-a] [-l]
- [-c|-d|-a] [-l]
- 含义
- 用于移除对指定路径节点的观察(watch)。
-c
表示移除连接级别的观察;-d
表示移除数据级别的观察;-a
表示移除所有类型的观察。-l
表示列出当前的观察设置情况。
- 用于移除对指定路径节点的观察(watch)。
- 含义
- [-c|-d|-a] [-l]
五、其他命令
-
getAllChildrenNumber path
- 含义
- 用于获取指定路径节点的所有子节点的数量。这个命令可以快速获取某个节点下的子节点数量情况,对于一些需要统计子节点数量的应用场景很有用。
- 含义
-
getEphemerals path
- 含义
- 用于获取指定路径节点下的所有临时节点。临时节点在ZooKeeper中有特殊的用途,如表示某个客户端的会话状态等,通过这个命令可以查看特定节点下的临时节点情况。
- 含义
-
history
- 含义
- 用于查看在当前ZooKeeper客户端会话中执行过的命令历史记录。这有助于回顾之前执行过的操作,方便调试和重复执行某些命令。
- 含义
-
listquota path
- 含义
- 用于列出指定路径节点的配额限制情况。可以查看节点是否设置了节点数量、字节数等配额限制,以及当前的使用情况是否接近配额限制。
- 含义
-
ls [-s] [-w] [-R] path
- [-s] [-w] [-R]
- 含义
- 用于列出指定路径节点的子节点。
-s
表示同时获取子节点的状态信息;-w
表示对子节点设置数据变更的观察(watch);-R
表示递归列出子节点,即列出指定路径节点及其所有子节点的子节点情况。
- 用于列出指定路径节点的子节点。
- 含义
- [-s] [-w] [-R]
-
reconfig [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]]] | [-add serverId=host:port1:port2;port3[,...]] [-remove serverId[,...]*]
- [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]]] | [-add serverId=host:port1:port2;port3[,...]] [-remove serverId[,...]*]
- 含义
- 用于重新配置ZooKeeper集群。
-s
表示同时获取配置信息的状态更新。-v version
表示指定配置的版本号。-file path
表示从指定的文件中读取新的集群配置信息。-members serverID = host:port1:port2;port3[,...]*
用于指定集群成员的详细信息,包括服务器ID、主机名、端口等。-add serverId = host:port1:port2;port3[,...]
用于添加新的服务器成员到集群中。-remove serverId[,...]*
用于从集群中移除服务器成员。这个命令可以动态地调整ZooKeeper集群的成员构成和配置信息。
- 用于重新配置ZooKeeper集群。
- 含义
- [-s] [-v version] [[-file path] | [-members serverID=host:port1:port2;port3[,...]]] | [-add serverId=host:port1:port2;port3[,...]] [-remove serverId[,...]*]
-
redo cmdno
- 含义
- 用于重新执行之前执行过的命令。
cmdno
是命令历史记录中的命令编号,可以通过history
命令获取。这个命令在需要重复执行某个操作或者纠正之前操作的错误时很有用。
- 用于重新执行之前执行过的命令。
- 含义
-
stat [-w] path
- [-w]
- 含义
- 用于获取指定路径节点的状态信息。
-w
表示对节点设置状态变更的观察(watch),当节点的状态(如创建时间、修改时间、版本号等)发生变化时,客户端将收到通知。
- 用于获取指定路径节点的状态信息。
- 含义
- [-w]
-
sync path
- 含义
- 用于强制同步指定路径节点的数据。在ZooKeeper中,数据的同步是自动进行的,但在某些特殊情况下(如网络故障后恢复),可以使用这个命令来确保节点数据在本地客户端与服务器之间的一致性。
- 含义
-
version
- 含义
- 用于获取ZooKeeper服务器的版本信息。可以了解当前使用的ZooKeeper的具体版本,这对于兼容性和功能支持方面的判断很有帮助。
-
whoami
- 含义
- 用于获取当前客户端在ZooKeeper中的身份标识。这个标识可以与身份验证和权限管理相关联,了解当前客户端在ZooKeeper中的身份状态。