欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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:注册节点的监听,创建/修改/删除都可以注册监听。

zookeeper常用的基本命令(下篇)

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

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

zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)

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

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

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

ls只能监听下的子节点,不能监听下下子节点
删除也会触发,但是修改时不会触发:

注意:每次命令操作path都必须是绝对路径
zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)
权限控制命令: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:管理员的权限。

zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)

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

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

zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)

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

zookeeper常用的基本命令(下篇)

总结 :上面的设置的节点的权限只是针对当前的节点的权限是有效的,子节点的权限是无效的。权限不会进行传递的。 创建节点可以指定权限的,可以指定使用哪种schema的格式去创建。如果一个用户登录了,还没有退出的话,可以使用匿名的方式去创建:就是当前登录的用户来进行校验。如果退出的话,还需要登录,注册再创建节点。第一次代表注册,第二次代表登录。

zookeeper常用的基本命令(下篇)
zookeeper常用的基本命令(下篇)


欢迎各位小伙伴来评价,想要工程代码的加群:797853299

相关标签: zookeeper