Zookeeper

205 阅读1分钟

节点类型

1.持久:客服端和服务器断开连接后,创建的节点不删除
2.短暂:客服端 和服务器断开连接后,创建的节点自己删除

开启集群

(分别在三台机器上开启命令)
./bin/zkServer.sh start  //启动
./bin/zkServer.sh status //查看状态
./bin/zkServer.sh stop   //停止

编写 kafka 群起脚本

#!/bin/bash

case $1 in  
"start"){
	for i in master slave1 slave2
	do
		echo "************$i************"
		ssh $i "/usr/local/src/zookeeper-3.4.14/bin/zkServer.sh start"
	done
};;
"stop"){
	for i in master slave1 slave2
	do
		echo "************$i************"
		ssh $i "/usr/local/src/zookeeper-3.4.14/bin/zkServer.sh stop"
	done
};;

esac

客户端命令

#开启客户端
./bin/zkCli.sh

# 查看节点
ls /
# 查看详细节点
ls2 /

# 创建普通节点(要加数据)
create /elaiza "girl"
create /elaiza/like "me"

# 创建短暂节点(客户端退出后,节点跟着删除)
create -e /elaiza/name "elaiza_idk"

# 创建带有序号节点
create -s /elaiza/like "him"

# 修改节点值
set /elaiza/like 'me too'

# 获取节点值
get /elaiza/like

# 节点值的变化监听
get /elaiza watch   -> 注册监听一次有且有效一次

# 节点路径的变化监听
ls /elaiza watch

# 查看节点详情
stat /elazia

# 删除节点
delete /elaiza

# 递归删除
rmr /elaiza

zookeeper监听器原理

1.首先有个main()线程

2.在main()线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connet),一个负责监听(listener)

3.通过connect线程将注册的监听事件发个Zookeeper

4.通过Zookeeper的注册监听器列表中将注册的监听事件添加到列表

5.Zookeeper监听到有数据或路径的变化,就会将这个消息发送给listener线程 --- 监听节点数据的变化和节点路径的变化(ls watch 和 get watch)

6.listener线程内部调用了process()方法