zookeeper节点知识、监听机制详解
2022-09-20 14:44:30 0 举报
zookeeper节点知识、监听机制详解
作者其他创作
大纲/内容
递归删除某一节点及其子节点
creat [-s] [-e] [-c] [-t ttl] path [data] [acl]
创建节点数据
分布式的序列号生成器
get [-s] [-w] path
收到通知
1、None: 连接建立事件2、NodeCreated: 节点创建3、NodeDeleted: 节点删除4、NodeDataChanged:节点数据变化5、NodeChildrenChanged:子节点列表变化6、DataWatchRemoved:节点监听被移除7、ChildWatchRemoved:子节点监听被移除
统一命名服务
zookeeper
监听节点数据变化
查看节点状态信息
1、客户端向服务端注册watcher;2、服务端事件发生触发watcher;3、客户端回调watcher得到触发事件情况;
查看节点
-s:节点状态信息-R:递归获取;-w:监听子节点变化(子节点数据变化,这里监听不到;并且临时节点不能有子节点)
节点状态信息:1、cZxid:Znode创建的事务id;2、ctime:节点创建时的时间戳;3、mZxid:Znode被修改时的事务id,每次对node的修改都会更新。每次更新会产生一个唯一的事务id,可以确定更新操作的先后顺序;4、pZxid:表示该节点的子节点列表最后一次修改的事务id。增加和删除子节点,会改变子节点列表;修改子节点数据则不影响。5、mtime:节点最新一次更新发生时的时间戳;6、cversion:子节点的版本号,当znode子节点发生变化时,cversion就会增加1;7、dataVersion:数据版本号,每次对节点进行set操作,dataVersion的值都会增加1(即使设置的是相同的数据),有效避免数据更新时出现的顺序问题;8、ephemeralOwner:如果该节点为临时节点,ephemeralOwner的值表示与该节点绑定的session id.如果不是,ephemeralOwner值为09、dataLength:数据的长度;10、numChildren:子节点的数量(只统计直接子节点的数量);
zookeeper应用场景:1、注册中心;2、数据发布/订阅(实现配置中心);3、负载均衡(存储服务对应的列表);4、命名服务;5、分布式协调,通知;6、集群管理;7、master选举8、分布式锁9、分布式队列
分布式下实现自增操作:1、客户端A个更新/c的版本1的数据为1;2、客户端B更新/c的版本2,数据加1;3、如果客户端A不知道客户端B的操作,就会去找版本1的过期数据来更新。这个时候需要一个监听B操作的机制,来获取B的操作后的数据。
ls [-s] [-w] [-R]
特性
使用场景1:条件更新
对节点增加限制
-s:节点状态信息-w:监听节点变化
节点分类:1、永久节点;2、临时节点(客户端关闭时,会清除);3、永久顺序节点;4、临时顺序节点;5、容器节点(zk-server定时扫描,没有任何子节点会删除)
利用zookeeper顺序节点可以生成分布式下的数据库id
setquota -n|-b val path
节点特性总结:1、同一级节点 key 名称是唯一的;2、创建节点时,必须要带上全路径;3、session 关闭,临时节点清除;4、自动创建顺序节点5、watch 机制,监听节点变化;6、delete 命令只能一层一层删除。提示:新版本可以通过 deleteall 命令递归删除。
get -s -w /c
只能删除无子节点的节点,-v表示节点版本号
-s:表示节点为顺序节点;-v :指定版本号
创建节点
watcher过程:
deleteall
设置指定版本号的节点数据
获取节点数据信息
delete [-v version] path
-n:表示子节点的最大个数;-b:数据值的最大长度,-1表示无限制。
1、一次性触发:watcher是一次性的,一旦被触发就会移除,再次使用时需要重新注册;2、客户端顺序回调:watcher回调是顺序串行执行的,只有回调后客户端才能看到最新的数据状态。一个watcher回调逻辑不应该太多,以免影响别的watcher执行。3、轻量级:WatchEvent是最小的通信单位,结构上只包含通知状态、事件类型和节点路径,并不会告诉数据节点变化前后的具体内容;4、时效性:her只有在当前session彻底失效时才会无效,若在session有效期内快速重连成功,则watcher依然存在,仍可接收到通知
删除节点
分布式环境中,实时掌握每个节点的状态是必要的,可根据节点实时状态做出一些调整。 ZooKeeper可以实现实时监控节点状态变化:1、可将节点信息写入ZooKeeper上的一个Znode;2、监听这个znode可获取他的实时状态变化;
监听通知机制(watcher)
zookeeper采用推拉结合的方式:1、推:服务端推给客户端watcher事件通知;2、拉:客户端获得通知后,然后主动到服务端拉取最新的数据
/c=1 version=1
客户端A
可以用作负载均衡
set -s -v 3 /c 3
递归删除节点
统一集群管理
节点基本操作
/c=1 version=1
set -s -v 2 /c 2
创建临时节点临时节点的ephemeralOwner是有赋值的
支持的事件类型
配置信息特点:1、数据量小的kv2、数据在运行时会发生动态变化;3、集群机器共享,配置一致
设置节点数据
容器节点:当容器中没有任何子节点时,该容器节点会被zk定期删除(定时任务默认60s检查一次,会有单独的线程去扫描)。可用于leader和锁的场景
配置中心
创建有序节点
客户端B
set [-s] [-v version] path data
stat [-w] path
0 条评论
下一页