Zookeeper的系统模型结构可以从以下几个方面进行分析:
综上所述,Zookeeper的系统模型结构是一个高度可扩展、高可用的分布式协调服务系统,它利用树形数据结构、多种节点类型、事务ID、Watcher机制和集群技术来支持各种分布式应用的需求。
节点的状态结构
每个节点都有属于自己的状态信息,这就很像每个人的身份信息一样。
语法结构:
[zk: localhost:2181(CONNECTED) 15] stat /a
cZxid = 0x300000014
ctime = Thu Dec 30 15:05:07 CST 2021
mZxid = 0x300000014
mtime = Thu Dec 30 15:05:07 CST 2021
pZxid = 0x300000015
cversion = 1
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 1
numChildren = 1
查看节点类型
语法结构:
create 参数 /java spring
参数
ZooKeeper 提供了分布式数据的发布/订阅功能。一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能够让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订阅者,使它们能够做出相应的处理。
注意:
在ZooKeeper中,引入了Watcher机制来实现这种分布式的通知功能。ZooKeeper 允许客户端向服务端注册一个 Watcher 监听,当服务端的一些指定事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
监听机制
监听节点变化
语法结构:
ls -w path
参数:
命令如果使用watch,那么监听的是节点的变化,而不是值的变化。
语法结构:
get -w path
参数:
watch监听机制只能够使用一次,如果下次想要使用,必须重新监听,就比如ls path watch命令,只能监听节点路径的改变一次,如果还想监听,那么需要再执行一次ls path watch命令。
在ZooKeeper的实际使用中,我们的做法往往是搭建一个共用的ZooKeeper集群,统一为若干个应用提供服务。在这种情况下,不同的应用之间往往是不会存在共享数据的使用场景的,因此需要解决不同应用之间的权限问题。
ACL 权限控制
参数:
setAcl /test2 ip:128.0.0.1:crwda
schema
ZooKeeper内置了一些权限控制方案,可以用以下方案为每个节点设置权限:
id
授权对象ID是指,权限赋予的用户或者一个实体,例如:IP 地址或者机器。授权模式 schema 与 授权对象 ID 之间关系:
权限permission
权限相关命令
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。