#0 系列目录#git
Zookeeper系列github
Zookeeper源码ui
Zookeeper应用
#1 搭建步骤# ##1.1 到github中下载该项目## 项目地址 https://github.com/apache/zookeeper。下载.zip包到本地解压。
解压后文件目录:
##1.2 使用ant对源码编译成eclipse工程## 上述源码还不是eclipse工程。须要使用ant eclipse命令来转换成eclipse工程。ant就不用再说了,自行网上搜索与配置。
cd zookeeper-trunk ant eclipse
这里来重点说说ant eclipse执行失败的问题:
get src="http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2" 更换成以下地址 get src="http://ufpr.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2"
<dependency org="commons-collections" name="commons-collections" rev="3.0"/>
上述两个问题解决后,再从新执行ant eclipse命令。
##1.3 经过idea导入eclipse工程##
将idea的编译器版本设置为1.7。而后整个世界就安静了,终于再也不报错了。
#2 运行Zookeeper# 咱们首先看下单机版ZooKeeper的启动类org.apache.zookeeper.server.ZooKeeperServerMain
,它的启动参数有两种状况:
有4个参数,前两个参数必填,后两个参数可选
,对客户端暴漏出的端口port,dataDir的目录,tickTime值,maxClientCnxns值(最大的客户端链接数)。下面分别来简单介绍下:
new ZooKeeper("192.168.126.130:2181",5000,this)
ZooKeeper有两类数据要存储。一种就是事务记录,另外一种就是ZooKeeper的内存树中的数据,以快照方式存储
。 因此能够给这两种数据指定不一样的目录。dataDir用来指定内存树快照的存储位置,dataLogDir用来指定事务记录的存储位置
。只给出了dataDir的目录,则表明两种数据都存储在该目录下
。
**用途1:**用于指定session检查的间隔,服务器会每隔一段时间检查一次链接它的客户端的session是否过时。该间隔就是tickTime。
**用途2:**用于给出默认的minSessionTimeout和maxSessionTimeout,若是没有给出maxSessionTimeout和minSessionTimeout(为-1),则minSessionTimeout和maxSessionTimeout的取值以下:
minSessionTimeout == -1 ? tickTime 2 : minSessionTimeout; maxSessionTimeout == -1 ? tickTime 20 : maxSessionTimeout;
分别是tickTime的2倍和20倍。
客户端代码在建立ZooKeeper对象的时候会给出一个sessionTimeout时间
,而上述的minSessionTimeout和maxSessionTimeout就是用来约束客户端的sessionTimeout。源码以下:
参数说完了,咱们就来设置一下:
同时,ZooKeeper采用log4j来做为日志输出,因此须要将log4j的配置文件(在conf文件夹中)放置到类路径下
。
当org.apache.zookeeper.server.ZooKeeperServerMain类的启动参数只有一个时,则表明着配置文件的路径
。也能够修改conf文件夹中的zoo_sample.cfg配置文件,修改下dataDir指定的路径。而后把该配置文件的路径做为参数: