选举机制:
1. 集群中半数以上节点存活,集群可用,即zookeeper适合安装奇数台服务器
2. zookeeper在配置文件中没有主从进程的概念,但是工作时,会通过选举选出来一个Leader和其它的Follower,内部选举机制临时产生,不固定(根据节点启动的先后顺序和myid中的值的大小)
3. 栗子:
三台节点,id为1-3,顺序启动
1启动之后,由于只有一台服务器,选举处于looking状态
2启动之后,与1通信,id为2胜出,1 和 2 都投给自己一票和给id大的一票,即现在2有两票
3启动之后,由于只有三台机器,半数已达到,即使3 的id大于2,但是此时Leader仍是2,而非3节点
Zookeeper的常用命令:
ls / : 查看当前znode中所包含的内容
ls2 / : 查看当前节点详细数据
create -s/-e :创建 -s:含有序列节点 -e:临时节点
get /节点名 :获得节点的值
rmr : 递归删除节点
set:设置节点具体的值
stat:查看节点的状态
delete:删除节点
监听器原理:
1. 创建一个main线程
2. 在main线程中创建zookeeper客户端,这时就会创建两个线程:connect(网络连接通信);listener(监听)
3. 通过connect线程将注册的监听事件发送给zookeeper
4. 在zookeeper的注册监听器列表中将注册的监听事件添加到列表中
5. zookeeper监听到数据变化,将信息发送给listener线程
6. listener线程内部调用了process方法
常见监听:
- 节点数据的变化
- 子节点增减的变化