zookeeper的节点示意图,在<一>中就已经去网上截了一张图,每一个数据节点就是一个znode,所以的节点按照层次结构组织一起,形成了一棵树,在使用中,可以看到访问地址使用斜杠(/)的,之前我们创建一个节点,又可以在节点下创建很多子节点。
下面是DataNode的信息,存了一个父节点,还有节点版本状态,还有子节点路径,这边的路径是只有父节点路径后的那些,acl权限,放的是一个long类型,实际的存在DataTree里面有个Map<Long, List<ACL>>
,
然后我们看看stat里面是什么信息
czxid:创建事务id
mzxid:最后修改的事务id
ctime:创建时间
mtime:最后一次修改时间
verison:数据版本号
cverison:子节点版本号
aversion:节点的acl版本号
pzxid:子节点最后一次修改事务的id
其中有三个version的版本号,来确定一个数据的版本,据说是用来实现并发乐观控制的,类似于CAS,如果版本发生变化,会抛出KeeperException.BadVersionException异常。
所有的znode组成了DataTree,里面有所有节点的nodes,还有两个WatcherManager,看个大概
对今天看的内容做个简要的笔记,也只是看个大概