数据分类
数据整体可以分为3类:
内存数据
磁盘数据:1)快照
2)事务日志
内存数据
Zookeeper将数据存储在内存中三个数据结构:DataNode、DataTree、ZKDataBase。
DataNode是ZooKeeper内存数据存储的最小单位,是持久化数据节点描述的最小单位,包括:parent(父节点的引用)、data(该节点存储数据)、acl(acl控制权限)、stat(持久化节点状态)、children(子节点列表)。
DataTree中nodes是Map,表示所有的ZooKeeper节点,ZNode的唯一标识path作为key。ephemerals是Map,用于存储临时节点,临时节点是跟Session绑定的,sessionId作为key。
Zookeeper的内存数据库,管理Zookeeper的所有会话、DataTree存储和事务日志。ZKDatabase会定时向磁盘dump快照数据,同时在Zookeeper启动时,会通过磁盘的事务日