zookeeper常用的基本命令(下篇)
程序员文章站
2024-03-16 10:35:58
...
本篇讲zookeeper的锁常用命令
什么是乐观锁:举个例子,因为第一次用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的格式去创建。如果一个用户登录了,还没有退出的话,可以使用匿名的方式去创建:就是当前登录的用户来进行校验。如果退出的话,还需要登录,注册再创建节点。第一次代表注册,第二次代表登录。
欢迎各位小伙伴来评价,想要工程代码的加群:797853299
上一篇: zookeeper常用的基本命令(上篇)
下一篇: kafka的基本命令