Zookeeper学习笔记
来源:https://www.cnblogs.com/qingyunzong/p/8618965.html
zookeeper概述
ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基
本服务:分布式锁服务。由于ZooKeeper的开源特性,后来我们的开发者在分布式锁的基础上,摸索了
出了其他的使用方法:配置维护、组服务、分布式消息队列、分布式通知/协调等。ZooKeeper在实现这
些服务时,首先它设计一种新的数据结构——Znode,然后在该数据结构的基础上定义了一些原语,也
就是一些关于该数据结构的一些操作。有了这些数据结构和原语还不够,因为我们的ZooKeeper是工作
在一个分布式的环境下,我们的服务是通过消息以网络的形式发送给我们的分布式应用程序,所以还需
要一个通知机制——Watcher机制。
zookeeper数据模型
ZooKeeper数据模型Znode
ZooKeeper的数据模型,在结构上和标准文件系统的非常相似,都是采用树形层次结构,ZooKeeper树
中的每个节点被称为—Znode
(1)引用方式
Zonde通过路径引用,如同Unix中的文件路径。路径必须是绝对的,因此他们必须由斜杠字符来开头。
除此以外,他们必须是唯一的,也就是说每一个路径只有一个表示,因此这些路径不能改变。在
ZooKeeper中,路径由Unicode字符串组成,并且有一些限制。字符串"/zookeeper"用以保存管理信
息,比如关键配额信息。
(2)Znode结构
ZooKeeper命名空间中的Znode,兼具文件和目录两种特点。既像文件一样维护着数据、元信息、
ACL、时间戳等数据结构,又像目录一样可以作为路径标识的一部分。图中的每个节点称为一个
Znode。 每个Znode由3部分组成:
① stat:此为状态信息, 描述该Znode的版本, 权限等信息
② data:与该Znode关联的数据
③ children:该Znode下的子节点
ZooKeeper虽然可以关联一些数据,但并没有被设计为常规的数据库或者大数据存储,相反的是,它用
来管理调度数据,比如分布式应用中的配置文件信息、状态信息、汇集位置等等。这些数据的共同特性
就是它们都是很小的数据,通常以KB为大小单位。ZooKeeper的服务器和客户端都被设计为严格检查并
限制每个Znode的数据大小至多1M,但常规使用中应该远小于此值。
(3)数据访问
ZooKeeper中的每个节点存储的数据要被原子性的操作。也就是说读操作将获取与节点相关的所有数
据,写操作也将替换掉节点的所有数据。另外,每一个节点都拥有自己的ACL(访问控制列表),这个列表
规定了用户的权限,即限定了特定用户对目标节点可以执行的操作。
评论0
最新资源