半数机制:
- 集群中半数以上机器存活集群可用。指定一个机器为leader
选举机制:
- 顺序启动服务器,半数以上启动时id数最大的为leader
节点类型:
- 持久:客户端和服务器端断开连接后,创建的节点不删除
- 短暂:客户端和服务器端断开连接后,创建的节点自己删除
监听器原理:
-
首先一个主进程main()
-
在main线程中创建Zookeeper客户端
-
创建两个线程connet和listener
-
connet将组测的监听事件发送给zookeeper,zookeeper将事件添加到监听器列表中
-
有数据和路径变化时将消息发送给listener线程
-
listener启动process()方法
写数据流程
- client向zookeeper的server1发送写数据请求.
- 如此server1不是leader,则将请求转给leader,leader将请求广播给server1,server2,
- server写成功后通知leader
- 当leader收到多半server数据写成功,则认为数据写成功,告诉server1写成功,
- server1再通知client写成功代表整个写操作完成
zookeeper observer
- 不投票其他和fellow一样,意味着可以读写,但是写操作确认还是由fellow来完成
客户端操作命令:
- help:显示所有操作命令
- ls path[watch(启动路径监听)]:使- 用ls命令查看当前znode中包含的内容
- ls2 path[watch(启动监听)]:查看当前节点的数据并能看到更新次数等数据
- create:普通创建 -s 含有序列 -e 临时创建(重启或者超时消失)
- get path[watch(节点值监听)]:获得节点的值
- set:设置节点的具体值
- stat:查看节点状态
- delete:删除节点
- rmr:递归删除节点
备注
- 批量脚本启动 ssh命令属于no-login no interactive 不会加载配置文件 所以ssh命令中必须加source /etc/prfile 或者 export BASH_ENV=/etc/profile 添加环境变量