# zookeeper-3.4.5-src
**Repository Path**: sangjiacun_admin/zookeeper-3.4.5-src
## Basic Information
- **Project Name**: zookeeper-3.4.5-src
- **Description**: zookeeper源码剖析
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-03-01
- **Last Updated**: 2021-11-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# zookeeper 3.4.5 源码剖析
## 将ZooKeeper源码导入Intellij IDEA中
1. 去官网下载apache-ant-1.10.5-bin.tar.gz,解压缩,然后配置环境变量ANT_HOME,把$ANT_HOME\bin加入到PATH环境变量里去,最后ant -version检查一下ant的版本号,是否安装成功。
```
PS D:\code> ant -version
Apache Ant(TM) version 1.10.9 compiled on September 27 2020
```
2. 去官网下载zookeeper-3.4.5-tar.gz,解压缩,在zk目录下,
3. 需要修改依赖的仓库地址:
- 修改build.xml文件,将ivy.url替换成下面地址:
- ``
- 修改ivysettting.xml, 替换maven中央仓库地址
- ``
4. 然后进去执行`ant eclipse`命令,等待几分钟即可,就会看到`build success`的字样。
5. 最后打开intellij idea,选择import project,选择这个zookeeper的源码目录,然后选择from existing external project,选择eclipse项目,也就是把eclipse项目导入intellij idea中,。
6. 然后打开就可以看到源码了,非常的方便。
## 从启动脚本开始,阅读源码
## 持久化框架
持久化的类主要在 `src/java/main/org/apache/zookeeper/server/persistence`:
- `TxnLog`,接口类型,读取事务性日志的接口。
- `FileTxnLog`,实现TxnLog接口,添加了访问该事务性日志的API。
- `Snapshot`,接口类型,持久层快照接口。
- `FileSnap`,实现Snapshot接口,负责存储、序列化、反序列化、访问快照。
- `FileTxnSnapLog`,封装了TxnLog和SnapShot。
- `Util`,工具类,提供持久化所需的API。
zk主要存放了两类文件
- snapshot(内存快照)
- log(事务日志,类似MySQL的binlog,将所有与修改数据相关的操作记录在log中)