zookeeper的命令

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: zookeeper的命令

基本操作命令 

带sh结尾的就是shell脚本得命令 清理命令:zkCleanup.sh 客户端命令:zkCli.sh 环境配置:zkEnv.sh 服务端配置:ZkServer.sh

常用命令是增删改查

1:如何去判断zookeeper是真得启动:

通过status来查出standalone就是单机版得启动。

2:连接到客户端,默认得就是连接到localhost:如果连接得zookeeper不在我的本地,可以这样去连接。

3:man:列出当前zookeeper可用得命令:

ls /path:列出根节点下得所有节点:zookeeper是个树形结构。

ls2 /path:除了详情以外,还会列出子节点。

get /path:把当前节点的数据拿出来

stat:是status得缩写,列出节点状态得详情信息 :stat /path:  path是节点路径。stat  /:从根节点查找,可以列出当前节点得状态信息。

cZxid:创建节点得id

ctime:节点得创建时间。

mZxid:修改节点得id。

mtime:修改节点得时间

pZxid:子节点得id [最新插入子节点得id]。

cversion:子节点得版本(每操作一次子节点,它得cversion就会加1。  

dataversion:当前节点得数据版本  数据版本号 每操作一次节点得值,按照每次加1得递增得。

aclversion:每改一次权限,这里也会增加1。

ephemeralowner:是否是临时节点

dataLength:数据得长度,它得长度是由父 节点得长度加上子节点得长度组成得长度。

numchildren:子节点得个数。

注意:加粗得都是运用乐观锁来实现的,来控制节点数据得完整性。


4:如果在一个子节点新创建一个子节点得话:

用stat查出得结果信息是最后一个节点得id,最新节点得id,因为最新插入得节点有可能最新被操作,它这里做了一个简单得优化

delquota [-n|-b] path:删除设置节点的配额 setquota -n| -b val path:设置某个节点得配额

n:代表配置该节点下面的子节点的个数

b:代表是path设置的数据大小

listquota path:列出某个path得配额

配额是限制子节点的个数和当前节点的数据的大小

history:列出客户端的11条命令

printwatches:是否动态的去打印监听器

create:新增节点  create [-s] [-e]  path  data  acl:acl代表得是权限 [-s有顺序的,-e:临时的节点]

[]:代表的是可选的,代表可以不写

新增节点就有节点的类型:

   永久节点:一旦创建,你不去手动的删除它,那么它在zookeeper上一直会存在。

   永久顺序节点:

   临时节点:当会话结束后(一旦断开客户端),这个节点就会自动被删掉,档期按会话      有效,临时节点在分布式锁里面非常有用。

   临时顺序节点:

注意:在创建节点的时候不能递归创建不能像linux中加个-p去递归的创建。

每个节点都需要一级一级的去创建。

creata /node noder-data:默认创建的节点就是永久的节点。

会话结束的话,再进行连接的话,这个节点还在的。

永久顺序节点:create -s /abc/bbb/ccc ccc-data,下面创建的都是永久的节点。

ccc-data:这个值得类型是byte。写得时候是字符串,但是存储得时候转成byte来存储

节点得名称是不能重复的。

临时节点:create -e /node/temp temp-data:当我主动退出会话的话,会把当前的node节点下的temp节点给主动删除掉。

注意:临时节点只能创建到永久节点的下面,临时节点不能创建临时节点,临时的节点不能有孩子,临时的节点也不能创建永久节点。

会话关闭的时候:在登录进来的时候,临时的节点就没了。

临时节点只能建到最后一层。

临时节点的用途:比如我这里用了分布式的锁,我刚好删除分布式锁的时候,突然之间出现了问题(突然之间断电的话),这里就没有成功,然后这把锁就没有删掉,也就是这个人一直没有把这把锁释放开,然后等锁的一直没有拿到,然后这里就形成了死锁了。如果是临时节点的话就好办了,当你断开会话的时候,就把锁给释放开了。所以说临时节点能够避免高性能的死锁的问题,这就是临时节点的好处。

分布式锁:相当于有很多个节点,去同时获取同一把锁,其中一个拿到的话,用完要释放锁,其他的节点才能够用。

临时的顺序节点:create  -e  -s  /node/temp1  temp1-data,后面 的数字是一共为9个数字的这样的列表。

临时的顺序节点:也是通过顺序来解决一些的常规的问题,比如可以找到临时节点中最小的序号的节点,让它来获取锁,操作完再释放,释放完让它的次节点来获取锁来进行操作,这样就可以保证在分布式的执行的过程中锁的执行是有顺序的,因为只有最小的节点才能拿到锁。

close:关闭客户端,quit:退出客户端

当退出再登录客户端查看之后所有的顺序的临时节点全部释放掉了

删除一个永久节点:delete  /abc/bbb/ccc0000000004   [version]

如果不指定版本的话,会按照节点的名称去删,

delete path [version]:在删除的时候可以指定版本的删除。仍然不支持递归删除。

它其实这里使用了乐观锁,version版本:每当操作一次这个节点,它的版本号会增加1

比如现在有两个并发操作,并发的去删除这个节点,有一个节点删除成功的话,它就会实现乐观锁,就是把它自身的版本号加1,第二个再来删的时候就发现版本号不对了。

所以说第二个就删除不成功。这里使用乐观锁来保持这个节点的一致性。

什么是乐观锁:举个例子,因为第一次用version的时候,版本号已经控制了dataVersion的值,他会把dataVersion变为3,然后再继续对version为2操作的时候就会失败,因为这两个是并发的操作,这时就可以保证这个节点的数据的一致性。

整个version的操作是原子的。这个是由zookeeper去控制的。

set:命令用来设置某个节点的值也可以修改某个节点的值。

xxx [watch]:命令,代表事件的监听:Watcher/watch  [zookeeper的监听是一致性的,整个事件的注册是一致性的,注册一次使用一次,如果想要监听其他的动作的话,还需要注册]

ls  path [watch]

get  path  [watch]

stat  path  [watch]:这里即使是失败了,但是监听已经注册上去了,创建了一个path这时就被监听到了。如果zookeeper版本为4的话 stat  /greer  watcher

syncConnected:代表成功的连上了zookeeper。

NodeCreated:代表创建成功了。

监听这个节点的变化。

stat:注册节点的监听,创建/修改/删除都可以注册监听。

ls -w /path:注册一个节点监听器:ls -w  /path:一样可以监听到。ls不能监听到节点的创建。

注册节点删除监听,改和创建能注册,但是监听不了。

get -w /path:注册监听,创建节点的时候这个事件没有被触发。删除和设置节点都会触发。

注册节点删除和修改事件的监听,但是创建能注册但是没监听。

总结:上面监听的只是父节点,子节点的监听如下:这个是监听的父节点,子节点发生改变的话,监听的是父节点。

ls只能监听下的子节点,不能监听下下子节点

删除也会触发,但是修改时不会触发:

注意:每次命令操作path都必须是绝对路径。


权限控制命令:ACL(Access Control List:访问控制列表)

权限控制命令在整个开发中用的非常多.

比如我有两个节点:不同的权限可以访问不同的节点,可以通过这个路径来授权。

让其能够访问哪些节点。

/admin:管理员只能访问/admin这个路径下的节点

/customer:普通用户只能访问/customer这个路径下的节点。

getAcl:获取某个节点的权限

setAcl:设置 某个节点的权限   setAcl  /acl-node/abc  world:anyone:ca

addauth:注册用户  addauth  digest 用户名:密码

整个的权限ACL是由[schema:id:permissions]

schema:是一种权限的机制。

在schema权限的机制一共有三种。

world:配置下只有一个id,就是anyone,代表的是任何人。组合写法:[world:anyone:permissions]

默认使用的是world。

auth:认证登录,需要有一个注册的 用户才能够操作。格式:auth:user:password:permissions,用这种方式设置好之后也是密文,默认的是使用

Base64(sha1(password))

digest:和auth差不多,但是在设置密码的受必须是密文 Base64(sha1(password))

用的最多的是使用时digest

在开发中可以使用ip来限制:某一台机器的ip才能够操作这个目录。

格式:ip:ip地址:permissions

如果操作auth和digest:必须要有一个注册用户

super:代表超级管理员,比如一个节点挂了,它去修复。

创建节点的时候可以指定acl:  create  [-s] [-e]  path  data  acl

默认的schema是world,anyone:代表的是所有的每个人。

权限是cdrwa:[permissions]

c:create

d:delete

r:read

w:write

a:admin:管理员的权限。

查询的权限就没有了

使用auth,如果使用它的话,需要登录注册的,这时密码就是加密的了。

本来用的是auth,但是它给转成digest得schema。

使用digest:也需要注册的。和auth是一样的,只是一个是明文,一个是密文。

总结 :上面的设置的节点的权限只是针对当前的节点的权限是有效的,子节点的权限是无效的。权限不会进行传递的。

创建节点可以指定权限的,可以指定使用哪种schema的格式去创建。如果一个用户登录了,还没有退出的话,可以使用匿名的方式去创建:就是当前登录的用户来进行校验。如果退出的话,还需要登录,注册再创建节点。第一次代表注册,第二次代表登录。

四字命令

运维用来排错和监控来做得命令

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
4月前
|
Shell
Zookeeper常用命令
Zookeeper常用命令
59 1
|
5月前
|
存储 数据安全/隐私保护
zookeeper 节点介绍及节点常用命令总结
zookeeper 节点介绍及节点常用命令总结
166 4
|
2月前
|
分布式计算 监控 Hadoop
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
Hadoop-29 ZooKeeper集群 Watcher机制 工作原理 与 ZK基本命令 测试集群效果 3台公网云服务器
43 1
|
6月前
|
Shell 虚拟化
分布式系统详解--框架(Zookeeper-基本shell命令)
分布式系统详解--框架(Zookeeper-基本shell命令)
55 1
|
7月前
|
存储 Shell 数据安全/隐私保护
ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
【4月更文挑战第11天】ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
119 7
|
7月前
|
存储
ZooKeeper客户端常用命令
ZooKeeper客户端常用命令
69 1
|
7月前
|
Shell
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
【4月更文挑战第10天】ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
87 0
|
7月前
Zookeeper的客户端的命令
Zookeeper的客户端的命令
47 0
|
7月前
|
存储 Shell 数据安全/隐私保护
ZooKeeper【基础 04】控制权限ACL(原生的 Shell 命令)
ZooKeeper【基础 04】控制权限ACL(原生的 Shell 命令)
182 0
|
7月前
|
Shell
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
81 0