数据模型
归根结底,就是一个树形结构。
- 可以理解为前端的tree.js组件。
- 也可以理解为linux下的文件目录结构: usr/local usr/etc
- 每个节点称为 znode ,可以有子节点,也可以有数据。
- 每个节点分为永久节点和临时节点,临时节点在session断开后消失。
- 每个节点都有各自的版本号,当节点发生变化时,版本号会累加。
- 删除/修改 过时的节点,版本号不匹配会报错。
- 每个ZK数据节点不易过大,几K即可。
- 节点可以设置权限。
作用
- master节点选举: 首脑模式,主节点挂了之后,会选举从节点接受工作,并保证这个节点是唯一的。从而保证集群的高可用。
- 统一配置文件管理。
- 发布订阅:发布者把数据发布到固定znode上,订阅者会读取这个数据。
- 分布式锁。
- 集群管理。
操作命令
- ls /znode1 查看znode1下的所有子节点。
- ls2 /znode1 查看znode1的节点信息。
- create 创建节点命令
- create -s /node1 data1 创建序列节点 node1 存放数据 data1
- create -e /node2 data2 创建临时节点 node2 存放数据 data2
- delete 节点 【版本号】 删除 : delete /node1 1
- set 节点 【版本号】更新 : set /node1 newdata 1
watcher
-
每个节点的操作,都有一个监听者---watcher
-
当某个节点发生变化,出发watcher事件
- 节点创建事件:NodeCreated
- 节点删除事件:NodeDataChanged
- 节点数据变化事件:NodeDeleted
- 子节点创建/删除事件:NodeChildrenChanged
-
在原客户端下,watcher机制是一次性的,出发后立即销毁。
使用场景
- 统一资源配置
ACL权限
- getAcl:获取某个节点的acl权限信息。 例如 :getAcl /test/test1
- setAcl:设置某个节点的acl权限信息。 例如: setAcl /test/test1 digest:username:password:cdrwa
- addauth:输入认证授权信息,注册时输入明文密码(登录)但是在zk的系统里,密码是以加密的形式存在的。 例如: addauth digest username:password
构成
[scheme: id : permissions]
scheme:代表采用的某种权限机制。
id : 代表允许访问的用户。
permissions : 权限组合字符串。
权限类别

scheme构成

permissions 构成

ACL 详解


使用场景
- 开发/测试/生产 环境区分
四字命令

网友评论