ZKDatabase功能
ZKDatabase负责管理会话、DataTree和事务日志,向上层提供统一的数据操作接口,其基本结构如下图所示:
ZKDatabase的初始化
ZKDatabase的初始化大致分为两步:
- 加载某个数据快照文件,恢复某个时刻T的全量内存数据;
初始化时,ZK会加载最新的100个数据快照文件,依次解析。首先,解析最新的数据快照文件,如果校验通过则返回文件名ZXID;否则,解析第二个最新的数据快照文件,以此循环。 - 加载对应的事务日志文件,获取时刻T之后的增量数据;
根据步骤1返回的ZXID,加载对应的事务日志文件,然后将事务应用到内存中。