1)概念:
ZooKeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以分布式应用程序的某种形式使用。每次实施它们都需要做很多工作来修复不可避免的错误和竞争条件。由于难以实现这些类型的服务,应用程序最初通常会吝啬它们,这使得它们在变化的情况下变得脆弱并且难以管理。即使正确完成,这些服务的不同实现也会在部署应用程序时导致管理复杂性
2)zookeeper功能:
1. 存储数据
2.监听
3)zookeeper工作机制
基于观察者模式
存储数据:存储集群中每台机器度关心的数据
a.启动服务器向Zk中注册信息
b.获取服务器列表并且注册监听
c.如果其中一个服务器挂掉了,zk立即发送一个下线通知
d.重新获取注册服务器列表,并再次监听
4)存储结构
目录树结构
5)应用场景
a.统一配置管理
b.统一命名服务
c 统一管理
d 服务器的动态上下线通知
e 负载均衡
6)选举机制
服务器1启动 zkServer.sh start
首先给自己一票 得票数为1
服务器2启动zkServer.sh start 服务器1 给投票为1 +自己给自己投的票为1 得票数为2
服务器3启动zkServer.sh start 发现前面有leader了,自己甘愿做小弟为follower
客户端的命令行操作
help
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
[zk: localhost:2181(CONNECTED) 1] history
0 - help
1 - history
2)查看帮助
help
3)查看当前zNode所包含内容
ls /
4)创建节点
create /alextest 18
5)查看节点
get /alextest
18
cZxid = 0x4200000002
ctime = Tue Dec 18 21:26:25 CST 2018
mZxid = 0x4200000002
mtime = Tue Dec 18 21:26:25 CST 2018
pZxid = 0x4200000002
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
6)创建短暂节点
create -e /alibaba work
7)创建带序号节点
create -s /baidu work
8)创建短暂、带序号的节点
create -e -s /tenent work
9)查看此节点的详细信息
ls2 /
10)获得节点值监听
get /alibaba watch
11) 监听路径
ls / watch
12)修改zNode 数据
set /alibaba iii
13)删除节点
delete 节点名称,只是删除单个节点
14)递归删除
rmr /节点下的/节点
15)查看节点状态信息
stat /
cZxid = 0x200000002 每次修改会增加一个时间戳
ctime = Sun Jan 28 08:37:21 CST 2018 节点创建的毫秒数
mZxid = 0x200000002 节点最后更新的时间戳
mtime = Sun Jan 28 08:37:21 CST 2018 更新的毫秒数
pZxid = 0x2500000055 节点更新的子节点
cversion = 42 子节点的变化号,修改次数
dataVersion = 0 数据变化号
aclVersion = 0 控制列表的变化号
ephemeralOwner = 0x0 临时节点拥有者的id
dataLength = 0
numChildren = 16
客户端API
create
getChildren
getData