ZK 的开发者给 ZK 设计了两种磁盘文件,对应的路径分别是 zoo.cfg
配置中的 dataDir
和 dataLogDir
这两项目录的配置。
dataDir
对应 snapshot,dataLogDir
对应 增量事务日志
- 现在 ZK 服务端启动后,会先从 snapshot 的目录中找到 zxid 最大的那个文件恢复数据,这里最大zxid 建设 100
- 恢复完后就会去 log 文件目录下寻找所有比 100 要大的 log 文件以及比 100 要略小一点的 log 文件,建设是
log.90
和log.108
这两个文件
因为文件名中的 90 只是说明这个文件建立的时候,最大的 zxid 是 90,但是文件中记录的写请求是很有可能会大于 100 的,所以
log.90
也需要被找到
- 然后就是从 log.90 这个文件开始恢复,先从 zxid 比 100 大的写请求开始读取并执行该写请求,然后继续读取 log.108,等待所有符合条件的 log 文件读取后,整个 ZK 的数据就恢复完成了。
=====