ZooKeeper
2021-02-25 18:20:29 0 举报
AI智能生成
zookeeper
作者其他创作
大纲/内容
基于观察者模式设计的分布式服务管理框架
数据结构
zookeeper采用树形层次结构,树中的每个节点被称为--Znode,Znode也可以拥有子节点。
Znode
组成
stat:状态信息,描述该Znode版本、权限等信息
data:Znode关联的数据
children:该Znode下的节点
类型
临时节点
1. 会话结束,临时节点将被自动删除
2. 对所有客户端都是可见的
3. 临时节点不允许有子节点
永久节点
不依赖会话, 显式执行删除操作时,它们才能被删除
顺序节点
在Zookeeper的路径结尾添加一个递增的计数(10位数,没有数值的数位用0补充)
监视器
1. 客户端在节点上设置watch。
2. 当节点状态发生改变时(Znode的增、删、改)将会触发watch对应的操作。
3. 当watch被触发时,Zookeeper将会对客户端发送且仅发送一条通知,因为watch只能被触发一次,这样可以减少网络流量。
CMD命令操作
基本命令
create [-s] [-e] path data acl
get path [watch]
set path data [version]
stat path [watch]
ls path [watch]
ls2 path [watch]
delete path [version] 只可删除不带子节点的节点
deleteall path 递归删除
配额命令
setquota -n|-b val path
listquota path
delquota [-n|-b] path
其他命令
sync path
history
redo cmdno
quit
printwatches on|off
connect host:port
close
ACL访问控制
setAcl path acl
getAcl path
addauth scheme auth
应用
数据发布与订阅
watch
负载均衡
所有broker和对应的分区信息全部注册到ZK指定节点上
生产者依次轮询分区列表
命名服务
数据信息存在节点
分布式通知/协调
watch
集群管理与Master选举
服务注册
多个[服务生产者]在同一个服务节点下创建临时节点
服务发现
[服务消费者]获取服务节点下的子节点列表
选举
服务节点下的子节点列表对应的[服务生产者]都尝试创建Master临时节点, 首先创建成功的为主节点, 其他节点则监听主节点
分布式锁
1. 新建客户端, 创建临时序列节点
2. 判断临时节点是否存在前一个节点
3. 不存在则获得分布式锁
4. 存在则监听前一个节点的remove事件, 当前一个节点被remove后, 获得锁
5. 获得锁后, 执行业务代码
6. 业务代码执行完毕, 关闭客户端, 释放锁
自增ID
永久序列节点
只有2^32位
分布式队列
顺序永久节点
0 条评论
下一页