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执行失败的问题:

  1. 上述命令会下载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"
  2. 还发现缺少依赖包 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. 情况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. 情况2:给出配置文件地址

    当org.apache.zookeeper.server.ZooKeeperServerMain类的启动参数只有一个时,则代表着配置文件的路径。也可以修改conf文件夹中的zoo_sample.cfg配置文件,修改下dataDir指定的路径。然后把该配置文件的路径作为参数:

zookeeper源码导入的更多相关文章

  1. Eclipse导入Zookeeper源码Version2017.11.3

    将Zookeeper源码导入Eclipse, Zookeeper源码需要使用ant构建后才能导入Eclipse, 和Solr的源码一样也是使用ant构建的, 大部分可以参考Eclipse导入Solr源 ...

  2. Zookeeper 源码解析-环境准备

    为了深入学习Zookeeper,准备把zookeeper源码导入eclipse中学习 一.Ant环境准备 因为我自己用的是Mac,直接输入命令:brew install ant即可 如果是window ...

  3. 如何编译Zookeeper源码

    1. 安装Ant Ant下载地址:http://ant.apache.org/bindownload.cgi 解压即可. 2. 下载Zookeeper源码包 https://github.com/ap ...

  4. Zookeeper源码编译为Eclipse工程(转)

    原文地址:http://blog.csdn.net/jiyiqinlovexx/article/details/41179293 为了深入学习ZooKeeper源码,首先就想到将其导入到Eclispe ...

  5. Zookeeper源码编译为Eclipse工程(win7下Ant编译)

    前言 ZooKeeper是雅虎的.用Ant进行软件构建. 千里之行,始于足下.想看源码的第一步,是下载源码并导入某个IDE工具. Ant http://ant.apache.org/ Windows: ...

  6. Zookeeper源码用ant进行编译为eclipse工程--转载

    原文地址:http://www.it165.net/os/html/201411/10142.html Zookeeper GitHub的下载地址是:https://github.com/apache ...

  7. 【ZooKeeper系列】3.ZooKeeper源码环境搭建

    前文阅读: [ZooKeeper系列]1.ZooKeeper单机版.伪集群和集群环境搭建 [ZooKeeper系列]2.用Java实现ZooKeeper API的调用 在系列的前两篇文章中,介绍了Zo ...

  8. zookeeper源码分析之五服务端(集群leader)处理请求流程

    leader的实现类为LeaderZooKeeperServer,它间接继承自标准ZookeeperServer.它规定了请求到达leader时需要经历的路径: PrepRequestProcesso ...

  9. zookeeper源码分析之四服务端(单机)处理请求流程

    上文: zookeeper源码分析之一服务端启动过程 中,我们介绍了zookeeper服务器的启动过程,其中单机是ZookeeperServer启动,集群使用QuorumPeer启动,那么这次我们分析 ...

随机推荐

  1. Senium 简介

    有时候我们在用 requests 抓取页面的时候,得到的结果可能和在浏览器中看到的不一样,在浏览器中可以看到正常显示的页面数据,但是使用 requests 得到的结果并没有.这是因为 requests ...

  2. Elasticsearch 版本控制

    悲观并发控制(Pessimistic concurrency control) 这在关系型数据库中被广泛的使用,假设冲突的更改经常发生,为了解决冲突我们把访问区块化.典型的例子是在读一行数据前锁定这行 ...

  3. 使用taro开发钉钉的E应用报错 You are currently using minified code outside of NODE_ENV === "production". This means that you are running a slower development build of Redux. You can use loose-envify (https://git

    今天测试taro转钉钉E应用的时候,在模拟器上没事,但是在真机上却报错了: You are currently using minified code outside of NODE_ENV === ...

  4. 使用jquery的 $.grep实现es6的filter效果

    现在es6是趋势,习惯了es6会方便的多,但是有时候由于项目的限制,会限制es6的使用,在处理数组的时候,往往会想将一个数组进行过滤产生另一个新数组,如es6的filter 如下,我又一个数组,[1, ...

  5. 如何创建圆角 UITextField 与内阴影

    本文转自http://www.itstrike.cn/Question/9309fbd6-ef5d-4392-b361-a60fd0a3b18e.html 主要学习如何创建内阴影 我自定义 UITex ...

  6. 设计模式初探-桥接(Bridge)模式

    桥接(Bridge)模式,又称Handle/Body模式,属于对象结构型模式.用于将抽象部分与它的实现部分分离,使它们都可以独立地变化.比如常见的电脑窗口界面,不同的操作系统其窗口界面绘制的原理肯定不 ...

  7. [OpenGL]用OpenGL制作动画

    //在窗口内绘制一个移动的矩形 /*我们通常还可以用OpenGL程序创建动画效果,这里我们利用前面的例子,绘制正方形,并使这个正方形在窗口的边框反弹.这里需要创建一个循环,在每次调用显示回调函数之前改 ...

  8. jsp连接数据库的乱码问题 servlet请求参数编码处理get post

    1.在所有需要读取数据的地方用下面的方式.同时jsp必须统一编码,如我都是UTF-8 String userName= new String(request.getParameter("us ...

  9. cookie设置在特定时间点过期的方法

    假设需求为:在当天晚上0:00过期. 方法: 得到当天晚上0:00这个时间点的一个时间. function getNextDate(){        var d = new Date(),      ...

  10. junit4 详解

    转:http://www.cnblogs.com/eggbucket/archive/2012/02/02/2335697.html JUnit4概述 JUnit4是JUnit框架有史以来的最大改进, ...