概述
这是写zookeeper过程中最轻松的一篇文章了,因为zookeeper的data存储结构是比较简单的,所以整个文章也比较简单。
zookeeper数据结构
首先zookeeper的核心保存结构是一个DataTree数据结构,其实内部是一个Map<String, DataNode> nodes的数据结构,其中key是path,DataNode是真正保存数据的核心数据结构。
DataNode核心字段包括byte data[]用于保存节点内容,Long acl用于保存data的acl规则,Set<String> children其实就是保存该DataNode下属的子节点的path。
最后一个源码截图说明了我们创建一个节点的时候如何处理parent和children的相关节点的存储,其实说白了就是所有的节点保存在DataTree<String, DataNode> nodes的数据结构当中,然后每个DataNode本身保存其children的path。说白了就是DataNode在一个统一的地方保存,然后父子关系由各个DataNode本身进行保存。