zookeeper操作命令
基础命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 1.help查看命令 2.ls /查看某个节点内容 3.ls -s /查看某个节点详细数据 4.create /sanguo + 内容
创建短暂节点 临时节点 带序号的节点 1.不带序号的临时节点 create –e /sanguo/wuguo “zhouyu” ls /sanguo quit退出再进来 ls /sanguo 短暂节点客户端退出删除 2.带序号的节点 create -s /sanguo/weiguo "caocao" ls /sanguo /sanguo/weiguo0000000002
|
监听节点
1 2 3 4 5 6
| get –w +node获取值 监听一次有效一次。。。。。 ls –w +node 监听子节点 delete + node删除节点 deleteall + node删除所有节点
|
Stat 结构体
1 2 3 4 5 6 7 8 9 10 11
| cZxid = 0x20 创建节点的事务id ctime = Wed Oct 21 17:20:01 CST 2020 创建节点时间 mZxid = 0x20 最后更新的事务id mtime = Wed Oct 21 17:20:01 CST 2020最后更新的时间 pZxid = 0x20 最后更新的子节点的id cversion = 0 znode子节点变化版本号 dataVersion = 0 znode数据变化号 aclVersion = 0 访问控制列表的变化号 ephemeralOwner = 0x0 是临时节点,sessionId否则0 dataLength = 0 znode数据长度 numChildren = 0 子节点数量
|
监听的原理 ***重
- 1.首先要有一个main线程
- 2.在main线程中创建zookeeper客户端,这时候创建两个线程,一个负责网络连接通讯connect,一个负责监听listener。
- 3.通过connect线程将注册的监听事件发送给zookeeper
- 4.在zookeeper的注册监听器列表中将注册的监听事件添加到列表中。
- 5.zookeeper监听到有数据或路径的变化,就会将这个消息发送给listener线程
- 6.listener线程内部调用了process()方法。
常见监听:
节点数据的变化
子节点增减的变化
写数据的流程
client客户端向zookeeper服务器发送一个写的请求。
如果server1不是leader,会把请求转给leader。leader会把写请求广播给各个server。各个server写完通知leader。
当leader收到大多数server数据写成功了,那么数据就写成功了。leader这个时候会告诉server1数据写成功。server
在通知客户端。