# 目录与配置文件

## Zookeeper主要目录结构

* bin： 主要的一些运行命令。
* conf：存放配置文件，其中我们运行zookeeper之前需要修改zk.cfg。
* contrb：附加的一些功能。
* dist-maven：mvn编译后的目录，包含写jar包及pom文件
* docs：文档
* lib：需要依赖的jar包
* recipes：案例demo代码
* src：源码

> 支持c和java的客户端

## Zookeeper配置文件

zoo.cfg

```
# The number of milliseconds of each tick 
tickTime=2000 

# The number of ticks that the initial  
# synchronization phase can take 
initLimit=10 

# The number of ticks that can pass between  
# sending a request and getting an acknowledgement 
syncLimit=5 

# the directory where the snapshot is stored. 
# do not use /tmp for storage, /tmp here is just  
# example sakes. 
dataDir=/home/myuser/zooA/data 

# the port at which the clients will connect 
clientPort=2181 

# ZooKeeper server and its port no. # ZooKeeper ensemble should know about every other machine in the ensemble # specify server id by creating 'myid' file in the dataDir # use hostname instead of IP address for convenient maintenance
server.1=127.0.0.1:2888:3888 
server.2=127.0.0.1:2988:3988  
server.3=127.0.0.1:2088:3088 

# 
# Be sure to read the maintenance section of the  
# administrator guide before turning on autopurge. 
# 
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance 
# 
# The number of snapshots to retain in dataDir 
# autopurge.snapRetainCount=3 
# Purge task interval in hours 
# Set to "0" to disable auto purge feature  <br>
#autopurge.purgeInterval=1 
dataLogDir=/home/myuser/zooA/log
```

* tickTime：心跳时间，为了确保连接存在的，以毫秒为单位，最小超时时间为两个心跳时间。
* initLimit：多少个心跳时间内，允许其他server连接并初始化数据，如果ZooKeeper管理的数据较大，则应相应增大这个值。（用于集群，允许从节点连接并同步到master节点的初始化连接时间，以tickTime的倍数来表示）。
* clientPort：服务的监听端口（连接服务器的端口，默认2181）。
* dataDir：必须配置，用于存放内存数据库快照的文件夹，同时用于集群的myid文件也存在这个文件夹里（注意：一个配置文件只能包含一个dataDir字样，即使它被注释掉了。）
* dataLogDir：日志目录，用于单独设置transaction log的目录，transaction log分离可以避免和普通log还有快照的竞争，如果不配做会和dataDir公用。
* syncLimit：多少个tickTime内，允许follower同步，如果follower落后太多，则会被丢弃。（用于集群，master主节点与从节点之间发送消息，请求和应答时间长度，以tickTime的倍数来表示。心跳机制）
* server.A=B：C：D：
  * A是一个数字,表示这个是第几号服务器,
  * B是这个服务器的ip地址
  * C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口
  * D是在leader挂掉时专门用来进行选举leader所用

> dataDir 和 dataLogDir 在zookeeper当前目录建立相应的目录配置即可。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xiaoxiami.gitbook.io/zookeeper/zookeeperhuan-jing-da-jian/zookeeperpei-zhi-wen-jian-jie-shao.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
