ACL(Access Control List) 和Watcher机制( 理论)
A、授权策略 scheme
授权策略用于确定权限验证过程中使用的检验策略(简单来说就是,通过什么来验证权限,或一个用户要访问某个节点,系统如何验证其身份),在 zk 中最常用的有四种策略。
IP:根据 IP 地址进行权限验证。
digest:根据用户名与密码进行验证。
world:对所有用户不做任何验证。
super:超级用户可以对任意节点进行任意操作。这种模式打开客户端的方式都与正常方式的不同。需要在打开客户端时添加一个系统属性。
B、 授权对象 id
授权对象指的是权限赋予的用户。不同的授权策略具有不同类型的授权对象。下面是各个授权模式对应的授权对象 id。
ip:授权对象是 IP 地址。
digest:授权对象是“用户名 + 密码”。
world:其授权对象只有一个,即 anyone。
Super:与 digest 相同,极权对象为“用户名 + 密码”。
C、 权限 Permission
c:Create,允许授权对象在当前节点下创建子节点。
d:Delete,允许授权对象删除当前节点。
r:Read,允许授权对象读取当前节点的数据内容,及子节点列表。
w:Write,允许授权对象修改当前节点的数据内容,及子节点列表。
a:Acl,允许极权对象对当前节点进行 ACL 相关的设置。
zk 的 watcher 机制具有以下几个特性。
一次性:一旦一个 watcher 被触发,zk 就会将其从客户端的 WatcherManager 中删除,服务端中也会删除该 watcher。zk 的 watcher 机制不适合监听变化非常频繁的场景。
串行性:对同一个节点的相同事件类型的 watcher 回调方法的执行是串行的。
轻量级:真正传递给 Server 的是一个简易版的 watcher。回调逻辑存放在客户端,没有在服务端