Zookeeper | 基本操作
2019-07-04 本文已影响0人
icebreakeros
基本操作
ZooKeeper
的结构类似于树,树中的节点成为Znode
Znode
负责数据的管理,并且执行协调更新操作
ZooKeeper
存在临时节点,这些节点与session
同时存在
可以为每个节点添加一个“监控”(Watcher
),当节点的状态发生改变时,用“监控”触发某个事件
基础命令
zkCli.sh -server 192.168.219.53:2181
# 关于基本命令
# -s表示创建序列节点,-e表示创建临时节点,在一个session内有效
create [-s] [-e] path data acl
get path [watch]
set path data [version]
stat path [watch]
ls path [watch]
ls2 path [watch]
delete path [version] # 只可删除不带子节点的节点
rmr path # 递归删除
# 关于配额命令
# 设置配额 -n限制子节点个数 -b限制数据值的长度
setquota -n|-b val path
listquota path
delquota [-n|-b] path
# 关于其他命令
sync path
history
redo cmdno
quit
printwatches on|off
connect host:port
close
ACL访问控制列表
zookeeper每个节点都会带一个acl的列表,用于决定用户可以操作的类型
create | read | write | delete | admin
setAcl path acl #
getAcl path
addauth scheme auth
zookeeper算法
zookeeper
的实现主要采用了原子广播(ZooKeeper Atomaic Broadcast
,简称Zab
)协议
原子广播
- 客户端所有的写请求都被转发给
leader
-
leader
将请求通过广播的形式发送给所有follower
- 超过半数的
follower
修改数据,leader
才会提交这个更新 - 过程要么全部成功,要么全部失败
zookeeper中服务器的状态
-
LOOKING
表示初始化状态,等待参与Leader
的投票 -
LEADING
表示领导者状态,统一管理系统中其他的服务器 -
FOLLOWING
表示跟随着状态,除了Leader
外,剩下的服务器都处于这个状态
选举过程
核心思想:由某个新加入集群的服务器发起一次选举,如果该服务器获得n/2+1
个票数,那么它将成为leader
zookeeper领导者选举的实现方式
LeaderElection
FastLeaderElection