选举机制(重点)
- 半数机制:集群中半数以上机器存活,集群可用。所以适合安装奇数台服务器
- Zookeeper虽然在配置文件中并没有指定Master和Slave,但是工作时通过内部的选举机制临时产生Leader
- 选举规则
- 从id最小开始,票数为包括自己所有比自己id小的数量
- 直到票数超过一半,则成为leader
- 所以一般是中间当选
节点类型
持久
客户端和服务器断开连接后,节点不删除
- 持久化目录节点
客户端与Zookeeper断开连接后,该节点依旧存在
- 持久化顺序编号目录节点
客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该结点名称进行顺序编号
说明:创建znode时设置顺序表示,znode名称后会附加一个值。顺序号单调递增,父节点维护
注意:分布式系统中,顺序号可以被用于为所有的时间进行全局排序,这样客户端可以通过顺序号推断事件的顺序
短暂
客户端和服务器断开连接后,节点自己删除
- 临时目录节点
- 临时顺序编号目录节点
Stat结构体
DataLength
: znode的数据长度
numChildren
:znode子节点数量
监听器原理(重点)
1.监听器原理详解
- 首先要有一个main()线程
- 在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络通信(connet),一个负责监听
- 通过connect线程将注册的监听事件发送给Zookeeper
- 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中
- Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
- listener线程内部调用了process()方法
2. 常见的监听
- 监听节点数据的变化
get path watch
- 监听子节点增减的变化
ls oath watch