版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
什么是Zookeeper
Zookeeper是一种分布式协调服务, 用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。Zookeeper通过其简单的架构和API解决了这个问题, Zookeeper允许开发人员专注于核心应用程序逻辑, 而不必担心应用程序的分布式特性。
Zookeeper的数据模型
Zookeeper的数据模型是什么样子呢? 它很像数据结构当中的树, 也很像文件系统的目录, Zookeeper是一种标准的二叉树结构
树是由节点所组成, Zookeeper的数据存储也同样是基于节点, 这种节点叫做Znode
但是, 不同于树的节点, Znode的引用方式是路径引用, 类似于文件路径
/动物/狗
/汽车/宝马
这样的层级结构, 让每一个Znode节点拥有唯一的路径, 就像命名空间一样, 对不同信息作出清晰的隔离
Znode包含哪些元素
data: Znode中的数据信息
ACI: 记录Znode的访问权限, 即哪些人或哪些IP可以访问本节点
state: 包含Znode的各种元数据, 比如事务ID, 版本号, 时间戳, 大小等等
child: 当前节点的子节点引用
这里需要注意一点: Zookeeper是为读多写少的场景所设计, Znode并不要用来存储大规模业务数据, 而是用于存储少量的状态和配置信息, 每个节点的数据量最大不能超过1MB
Zookeeper的基本操作
创建节点
create
删除节点
delete
判断节点是否存在
exists
获得一个节点的数据
getData
设置一个节点的数据
setData
获取节点下的所有子节点
getChildren
这其中, exists, getData, getChildren属于读操作, Zookeeper客户端在请求读操作的时候, 可以选择是否设置watch