Zookeeper入门
Zookeeper入门
你我皆温柔Zookeeper入门
集群角色
- leader:管理follower,处理所有事务请求(仅有一个)
- follower:选举leader,和数据的同步及获取
- observer:复制数据的同步及获取(需要配置生效)
配置环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13进入zookeeper的bin目录
cd /export/server/zookeeper/bin
查看zookeeper状态
。/zkServer.sh status
shell 脚本配置环境变量
!#usr/bin bash
echo 'export ZOOKEEPER_HOME=/export/server/zookeeper' >> /etc/profile
echo 'export PATH=$PATH:$ZOOKEEPER_HOME/bin' >> /etc/profile
source /etc/profile启动Zookeeper服务
1
2
3
4
5
6
7
8查看状态(最少启动两台才会显示角色相关信息)
zkServer.sh status
启动
zkServer.sh start
jps 查看进程是否启动
jps
停止
zkServer.sh stop使用zookeeper
1
2
3
4
5# 连接zookeeper
# 1、连接本地
zkCli.sh
# 2、连接其他节点
zkCli.sh -server IP/域名/映射常见操作命令
1
2
3
4
5
6
7
8
9
10help 查看帮助信息
ls 查看节点信息
ls2 查看节点详细信息
create [-e] 节点路径名 创建节点 ; -e表示临时节点 ;创建多级目录时,只能一级一级的创建
get 节点路径名 获取节点内容
set 节点路径名 修改后的值 修改节点
delete 节点路径名 删除节点
rmr 节点路径名 删除多层节点
history 查看历史命令
quit 退出节点类型
永久节点:==不依赖与会话,只有客户端执行删除操作时才能删除;永久节点可以拥有子节点==
临时节点:==依赖与会话,会话结束自动删除;不允许有子节点==
节点属性:
- pZxid:事务ID
- ephemeralOwner:节点类型:永久节点0x0
Watch监听机制
实现了发布、订阅功能
监听过程
- 客户端向服务器端注册Watcher
- 服务端事件发生触发Watcher
- 客户端回调Watcher得到触发事件
设置监听
1
2
3
4
5
6
7
8
9# node1 开启zkServer
zkServer.sh
# node2 连接node1
zkCli.sh -server node1
# node3 连接node1
zkCli.sh -server node1
# node2\node3 设置监听
get /节点名 watch监听机制
- 先注册后触发
- 一次性触发
- 异步发送
- 通知内容:通知状态、事件类型、节点路径
选举机制
选举机制:过半原则
特殊情况
集群第一次启动
1
2follower同步投票,票数相同时,谁的myid大,谁就是leader
如果已经有leader,后面加入的都是follower;不管myid有多大,除非leader宕机了leader宕机后,再次启动
1
leader宕机后,剩下的follower会进行选举,选出新的leader,开启新纪元