1. 应用场景
- Zookeeper提供的服务包括:统一命名服务,统一配置管理,统一集群管理,服务器节点动态上下线,软负载均衡等。
2. 配置修改
// 安装路径下的:conf/zoo_sample.cfg 修改为 zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/自定义路径/zookeeper-3.4.14/data
// 日志
dataLogDir=/自定义路径/zookeeper-3.4.14/datalog
// 端口
clientPort=2181
3. 操作单节点 Zookeeper
// 3.1. 启动Zookeeper
bin/zkServer.sh start
// 3.2. 查看进程是否启动
jps
// 3.3. 查看状态
bin/zkServer.sh status
// 3.4. 启动客户端
bin/zkCli.sh
// 3.5. 退出客户端
quit
// 3.6. 停止 Zookeeper
bin/zkServer.sh stop
4. Zookeeper Shell命令操作
// 4.1. 查看当前 Znode 中所包含的内容
ls /
// 4.2. 查看当前节点详细数据
ls2 /
// 4.3. 创建两个普通节点
create /node001 "realData"
create /grandfather/father "xiaoming"
// 4.4. 获得节点的值
get /grandfather/father
// 4.5. 修改节点数据值
set /grandfather/father "xiaowu"
// 4.6. 删除节点
delete /grandfather/father
// 4.7. 递归删除节点
rmr /grandfather
5. 监听器原理
- 首先,需要有一个main()线程;
- 在main线程中创建Zookeeper客户端,这时,就会创建两个线程:一个负责网络连接通信(connect),一个负责监听(listener);
- 通过connect线程将注册的监听事件发送给Zookeeper;
- 在Zookeeper的注册监听器列表中将注册的监听事件添加到列表中;
- Zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程;
- listener线程内部调用了process()方法;