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执行失败的问题:
上述命令会下载ant-eclipse-1.0.bin.tar.bz2文件,老是下载不成功,无法继续下去,修改源码中build.xml中的配置,将地址:
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"
- 还发现缺少依赖包 commons-collections,在ivy.xml文件中加入如下配置:
<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,它的启动参数有两种情况:
情况1:直接给出相应的参数设置
有4个参数,前两个参数必填,后两个参数可选,对客户端暴漏出的端口port,dataDir的目录,tickTime值,maxClientCnxns值(最大的客户端连接数)。下面分别来简单介绍下:对客户端暴漏出的端口port,即如下客户端代码指定的端口:
new ZooKeeper("192.168.126.130:2181",5000,this)
dataDir的目录:
ZooKeeper有两类数据要存储。
一种就是事务记录,另一种就是ZooKeeper的内存树中的数据,以快照方式存储。 所以可以给这两种数据指定不同的目录。dataDir用来指定内存树快照的存储位置,dataLogDir用来指定事务记录的存储位置。只给出了dataDir的目录,则代表两种数据都存储在该目录下。- tickTime值,单位ms,默认3000:
用途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。源码如下:
- maxClientCnxns值,用于指定服务器端最大的连接数。
参数说完了,我们就来设置一下:

同时,ZooKeeper采用log4j来作为日志输出,所以
需要将log4j的配置文件(在conf文件夹中)放置到类路径下。情况2:给出配置文件地址
当org.apache.zookeeper.server.ZooKeeperServerMain类的启动参数只有一个时,则代表着配置文件的路径。也可以修改conf文件夹中的zoo_sample.cfg配置文件,修改下dataDir指定的路径。然后把该配置文件的路径作为参数:
zookeeper源码导入的更多相关文章
- Eclipse导入Zookeeper源码Version2017.11.3
将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...
- Zookeeper 源码解析-环境准备
为了深入学习Zookeeper,准备把zookeeper源码导入eclipse中学习 一.Ant环境准备 因为我自己用的是Mac,直接输入命令:brew install ant即可 如果是window ...
- 如何编译Zookeeper源码
1. 安装Ant Ant下载地址:http://ant.apache.org/bindownload.cgi 解压即可. 2. 下载Zookeeper源码包 https://github.com/ap ...
- Zookeeper源码编译为Eclipse工程(转)
原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/41179293 为了深入学习ZooKeeper源码,首先就想到将其导入到Eclispe ...
- Zookeeper源码编译为Eclipse工程(win7下Ant编译)
前言 ZooKeeper是雅虎的.用Ant进行软件构建. 千里之行,始于足下.想看源码的第一步,是下载源码并导入某个IDE工具. Ant http://ant.apache.org/ Windows: ...
- Zookeeper源码用ant进行编译为eclipse工程--转载
原文地址:http://www.it165.net/os/html/201411/10142.html Zookeeper GitHub的下载地址是:https://github.com/apache ...
- 【ZooKeeper系列】3.ZooKeeper源码环境搭建
前文阅读: [ZooKeeper系列]1.ZooKeeper单机版.伪集群和集群环境搭建 [ZooKeeper系列]2.用Java实现ZooKeeper API的调用 在系列的前两篇文章中,介绍了Zo ...
- zookeeper源码分析之五服务端(集群leader)处理请求流程
leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...
- zookeeper源码分析之四服务端(单机)处理请求流程
上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...
随机推荐
- [XPath] XPath 与 lxml (四)XPath 运算符
XPath 中支持的运算符 # | 或: 返回所有 price 和 title 节点集合 >>> root.xpath('//price|//title') [<Element ...
- 升级nodejs至最新
网上找出了很多升级nodejs版本的方法,都不太好用,直至发现这个: 在命令行窗口中执行:where node: 然后在nodejs官网中下载最新版本,将刚才目录下node.exe替换掉: 最后执行: ...
- 偶值得纪念的一天-初学习C#
今天好悲催啊,竟然生病啦,不过一切还好! 今天我们在云和数据学习的第二天,上午没有听课,似乎学习了变量的定义以及命名方法,还有变量类型的显隐式转换:我感觉这些还是在之前看书知道啦把,因此看啦看老师做的 ...
- HipHop的原理
HipHop的原理 HipHop将PHP代码转换为高度优化的C++代码,然后再用g++编译器编译.它可以保持语义等效地执行源代码,但为了提高性能,牺牲了一些很少用到的特性,比如eval(). HipH ...
- 日记整理---->2017-05-17
起始时间是2017-05-17,记录一下spring的学习过程.陌生人可以变成熟人,但熟人一旦变成陌生人,就再也回不去了. 一.测试一下init-method和depend-on huhx.xml文件 ...
- 【前端积累】Awesome初识
前言 之所以要看这个,是因为在看到的一个网站里图表显示的全屏和缩小,anyway ,还是看一下咯~ 一.介绍 Font Awesome 字体为您提供可缩放矢量图标,它可以被定制大小.颜色.阴影以及任何 ...
- sencha touch 扩展官方NavigationView 灵活添加按钮组,导航栏,自由隐藏返回按钮(2014-5-15)
扩展视频讲解:http://www.cnblogs.com/mlzs/p/3652094.html官方NavigationView详解:http://www.cnblogs.com/mlzs/p/35 ...
- fs-extra 文件管理
一.fs-extra 文件管理 $npm install fs-extra --save 1.创建一个目录 fs.mkdir(path, [mode], [callback(err)]) path 将 ...
- 剑指offer题目记录
1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...
- 【C#】简单计算器源代码
form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...