zookeeper session机制、watcher和acl权限控制
zookeeper session机制
- 用于客户端与服务端之间的连接,可设置潮湿时间,通过心跳包的机制(客户端向服务器端ping包请求)检查心跳结束,session就过期
- session过期的时候,该session创建的所有临时节点就会被抛弃
zookeeper watcher
- 对节点的watcher操作 get stat
- 针对每个节点的操作,都可以有一个监控者,当节点变化,会触发watcher事件
- zk中watcher是一次性的,触发后立即销毁
- 所有监控者的节点变更操作都能触发watcher操作
- 子节点的watcher操作
-
监控父节点,当父节点对应的子节点发生变更的时候,父节点上的watcher事件会被触发,操作命令:ls ls2
-
增删会触发,修改不会,如果子节点再去新增子节点,不会触发(触发watcher事件一定是直系子节点)
-
acl(access control lists)权限控制
-
针对节点设置相关的读写权限,保证数据的安全性
-
常用的命令
getAcl 获取节点权限setAcl 设置
addauth 输入认证授权信息,注册时输入明文密码;zk里,加密保存
-
acl组成 [scheme: id :permissions]
-
scheme 授权机制
world 下只有一个id,也就是anyone,表示所有人 world:anyone:permissions
auth代表认证登录,需要注册用户有权限才可以 auth:user:password:permissions
digest 需要密码加密才能访问 digest:username:BASE64(SHA1(password)):permissions
ip ip:localhost:permissions
super 代表超管,有所有的权限
-
id : 运行访问的用户
-
permissions : 权限组合字符串
cdrwa
c create
d delete
r read
w write
a admin
cdrwa cdr cdw -
acl的使用场景
- 开发环境和测试环境,使用acl就可以进行分离,开发者无权去操作 测试的节点
- 生成环境上控制指定ip的服务可以访问相关的节点