从用途来说:Zookeeper是Apache组织下的高性能,分布式的应用协调服务框架,是google的chubby的一个开源实现。
Zookeeper具有的特性
原子性
更新只能成功或者失败,没有中间状态
数据一致性
为客户端展示同一个视图,这是zookeeper里面一个非常重要的功能
实时性
zookeeper不能保证两个客户端能公式得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口
可靠性
如果消息被一台服务器接收,那么它将被所有的服务器接收。
独立性
各个Client之间互不干预
zookeeper存储ZNode
Znode是Zookeeper存储数据的数据单元
类型
持久型
持久Znode是在Zookeeper创建的Znode是永久存在的Znode;zookeeper即使重启也不会丢失
临时型 -e
临时Znode是客户端断开,这个客户端创建的Znode即被删除的Znode,当客户端创建了Znode,只被这个客户端占有使用;一旦客户端停止,断开,临时的znode会被删除
顺序类型 -s
顺序Znode是Zookeeper为创建的Znode名字后追加10位顺序数字的Znode防止名字冲突;节点后会跟随一个10位数字的顺序号
角色
领导者(leader)
负责进行投票的发起和决议,更新系统状态
观察者(follower)
用于接收客户请求并向客户端返回结果,在选主过程中参与投票。
追随者(observer)
可以接收客户端连接,将请求转发给leader节点。但Observer不参加投票的过程,只同步leader的状态。Observer的目的是为了广播系统,提速读取速度。
学习者(Learner)
是跟随者和观察者
客户端(Client)
请求发起方
watcher:仿效观察者模式实现的Zookeeper的事件通知机制
监听内容:
1:znode数据改变
2:删除事件
3:子目录节点增加删除事件
zookeeper常用命令
zookeeper启动命令 zkServer.sh start
zookeeper状态查看的命令: zkServer.sh status
zookeeper关闭的命令:zkServer.sh stop
启动zookeeper客户端命令
./zkCli.sh -server ip:port
这里ip 指定是要连接的节点的ip地址。Ip:如ip是192.168.230.121 这条命令就写为,这里的端口号默认为2181.
./zkCli.sh -server 192.168.230.121:2181
列出“/”下面的其它的节点
`ls /`
创建临时节点,用quit命令退出或结束,会话节点消失
create -e /name1 zhangsan
创建顺序节点
create -s /name2 lisi
创建临时数据节点 ( 临时数据节点zookeeper重新启动后消失)
creae -e -s /name3 wangwu
通过名字获取节点
get /name1
删除指定名字的节点
rmr /name2
设置节点内容
set /name3 zhangsan