Zookeeper
zookeeper
- Zookeeper是一个开源的分布式,为分布式应用提供协调服务的Apache项目
- 存储和管理数据节点,一旦数据节点的状态发生变化,zookeeper通知在zookeeper上注册的客户端
zookeeper特点
- 一个leader,多个Follower
- 集群中有半数以上节点存活,zookeeper集群就可以正常服务
- 全局数据一致性,无论客户端连接到哪个服务器,都可获取到你想要的数据(只要服务器上有)
- 更新原子性,一次更新过程要么成功要么失败
- 实时性
zookeeper应用
- 统一命名服务
- 统一配置管理
- 统一集群管理
- 服务节点动态上下线
- 软负载均衡
zookeeper节点类型
- 持久化目录节点
- 持久化顺序编号目录节点
- 临时目录节点
- 临时顺序编号目录节点
监听器原理
- 创建main()线程
- main()线程中创建zookeeper客户端,包含两个线程,一个用于网络连接通讯(connect),一个用于监听(listener)
- 通过线程connect注册监听事件发送给Zookeeper
- 注册监听事件添加至注册监听列表中
- 有数据或路径发生变化就将消息发送给listener线程
- 以监听到的变化为触发机制作相应的处理
Zookeeper安装
- 下载安装包
下载地址为:https://zookeeper.apache.org/releases.html
- 解压安装包
tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz
#将解压后的安装包重命名为zookeeper
mv apache-zookeeper-3.5.7-bin.tar.gz zookeeper
- 进入配置文件./conf,配置文件zoo.cfg
#将示例文件zoo_sample.cfg拷贝为zoo.cfg
cp zoo_sample.cfg zoo.cfg
#进入文件编辑
vi zoo.cfg
注:这里的master、slave1、slave2亦可为IP地址,我在/etc/hosts文件中将IP重命名为master、slave1、slave2
- 创建存储zookeeper产生的数据的文件夹,并配置文件myid
#目录为zookeeper
mkdir zookeeper_data
#目录为zookeeper_data
vi myid
注:myid文件中填写主机对应的server号(zoo.cfg中配置的)
- 使用scp命令将文件zookeeper拷贝到其余两台主机上
scp -r /software/zookeeper slave1:/software
scp -r /software/zookeeper slave2:/software
- 相关命令
#目录为/software/zookeeper/bin
#启动命令
./zkServer.sh start
#停止命令
./zkServer.sh stop
重启命令
./zkServer.sh restart
状态查看命令
./zkServer.sh status
-
使用jps命令查看进程
-
配置环境变量
vi /etc/profile
在slave1和slave2上以同样方式配置zookeeper环境变量
Zookeeper的简单使用
- 创建节点
命令为create,-s表示创建顺序节点,-e表示创建临时节点,无参数表示创建持久节点
#创建顺序节点,数据为0000
create -s /next 0000
#创建临时节点,数据为1111
create -s /next-tmp 1111
#创建持久节点,数据为2222
create /next-per 2222
- 更改节点信息
#将节点/next-per数据内容更改为3333
set /next-per 3333
- 查看历史操作命令
history
- 指定历史命令编号快速执行
redo 历史命令的编号
- 退出客户端
exit