一、Zookeeper启动脚本
#!/bin/bash
case $1 in
"start"){
for i in zook01 zook02 zook03
do
echo ------zookeeper $i 启动 -----
ssh $i "/usr/local/zookeeper/zookeeper-3.5.7/bin/zkServer.sh start"
done
};;
"stop"){
for i in zook01 zook02 zook03
do
echo ------zookeeper $i 停止 -----
ssh $i "/usr/local/zookeeper/zookeeper-3.5.7/bin/zkServer.sh stop"
done
};;
"status"){
for i in zook01 zook02 zook03
do
echo ------zookeeper $i 状态 -----
ssh $i "/usr/local/zookeeper/zookeeper-3.5.7/bin/zkServer.sh status"
done
};;
esac
二、启动客户端
./zkCli.sh -timeout 0 -r -server ip:port
三、Zookeeper的数据模型
Zookeeper存储的数据是由 znode 组成的,节点也称为 znode,并以 key/value 形式存储数据。
整体结构类似于 linux 文件系统的模式以树形结构存储。其中根路径以 / 开头。
进入 zookeeper 安装的 bin 目录,通过sh zkCli.sh打开命令行终端,执行 "ls /" 命令显示:
3.1 查看根节点:ls /
3.2 查看节点的详细信息: ls -s /
3.3 查看节点的状态:stat /
3.4 创建普通节点(默认持久节点) create 【节点】【值】
#在根目录下创建节点
create /china "中国" --可以只创建节点,不设置值
#在/china下创建shanghai节点,必须存在 /china节点,不能创建多层节点
create /china/shanghai "上海"
#查看节点,不能加尾斜杠
ls /china
3.5 创建短暂节点:客户端和服务器断开连接后,创建的节点自己删除
create -e 【节点】【值】
create -e /china/henan "kaifeng"
3.6 创建带序号的节点
create -e -s【节点】【值】
create -s【节点】【值】
3.7 获取节点的内容
get 【节点】
get /china/shanghai
3.8 修改节点的内容
set 【节点】【值】
set /china/henan "zhengzhou"
3.9 删除节点
#删除空节点,节点不能有子节点
delete 【节点】
#删除所有节点,节点可以有子节点
deleteall [节点]
3.10 监听节点值的变化
1. 监听节点数据的变化
get path [watch]
get -s /china
2. 监听子节点增减的变化
ls path [watch]
四、节点类型
4.1 持久化节点:客户端和服务器端断开连接后,创建的节点不删除
4.2 短暂节点:客户端和服务器断开连接后,创建的节点自己删除
五、监听器的原理
1)首先要有一个main()线程
2)在main线程中创建zookeeper客户端,这时会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener).
3)通过connect线程将注册的监听事件添加到列表中
4)在zookeeper的注册监听器列表中将注册的监听事件添加到列表中
5)Zookeeper监听到有数据或路径的变化,就会将这个消息发送给listener线程
6)listner线程内部调用了process()方法。



