zookeeper基础知识
1.单个zookeeper结构
zookeeper结构图
zookeeper的数据模型很像树。
- 每个节点都为znode
- znode分为持久节点(客户端断开连接后,仍然存在),临时节点(断开连接,节点消失,不允许有子节点),顺序节点(持久或临时,编号用于锁定和同步中)
- 每个znode维护一个stat(由版本号,操作控制列表,时间戳,数据长度组成)
znode详解
2.zookeeper集群结构
zookeeper集群结构
1、client
分布式中的一个节点,访问服务器的配置信息,周期性向server发送心跳包,server向client回应确认,如果client没有收到回应,则重定向到另一个server
2、server
zookeeper中的一个节点,为client提供所需的服务,给client回应信息表明自己是存活的
3、leader
连接任何一个节点,如果节点出现故障,leader自动修复,在service启动时完成leader的选举
4、follower
听从leader的指令,完成选举工作
2.1Leader主要有三个功能:
- 恢复数据;
- 维持与follower的心跳,接收follower请求并判断follower的请求消息类型;
- follower的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。
zookeeper基础使用
#创建节点
create [-s] [-e] path data acl
-s:创建节点顺序累加,-e创建临时节点,path:路径,data:数据,acl:权限控制
#新增(修改)数据
set path data [version]
#删除数据
delete path [version]
#获取数据
ls path [watch] 获取子节点
get path [watch] 获取节点信息
ls2 path [watch] 为上面两个命令的结合