zookeeper基本操作

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
在通知客户端。

分享到