目录
一、Zookeeper是什么?有什么用?
ZooKeeper 是 Apache 软件基金会的一个软件项目,是一个树形目录服务。
Zookeeper翻译过来就是动物管理员,他还是用来管Hadoop(大象)、Hive(蜜蜂)、Pig(小猪)的管理员。简称zk。
Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。
Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
二、Zookeeper的数据模型
zookeeper 提供的名称空间非常类似于标准文件系统,key-value 的形式存储。名称 key 由斜线 / 分割的一系列路径元素,zookeeper 名称空间中的每个节点都是由一个路径标识。
这里的每一个节点都被称为:ZNode,每个节点上都会保存自己的数据和节点信息。节点可以拥有子节点,同时也允许少量(1MB)数据存储在该节点之下。
Znode的状态属性:
cZxid |
创建节点时的事务ID |
ctime |
创建节点时的时间 |
mZxid |
最后修改节点时的事务ID |
mtime |
最后修改节点时的时间 |
pZxid |
表示该节点的子节点列表最后一次修改的事务ID,添加子节点或删除子节点就会影响子节点列表,但是修改子节点的数据内容则不影响该ID(注意,只有子节点列表变更了才会变更pzxid,子节点内容变更不会影响pzxid) |
cversion |
子节点版本号,子节点每次修改版本号加1 |
dataversion |
数据版本号,数据每次修改该版本号加1 |
aclversion |
权限版本号,权限每次修改该版本号加1 |
ephemeralOwner |
创建该临时节点的会话的sessionID< |