Zookeeper是开源高可用的分布式协同服务,在分布式系统中应用广泛,代码量适中,适合阅读和学习。首先从开发环境的搭建开始介绍。
环境和工具
LZ用的是MAC OS
Git,Ant,Intellij Idea(eclipse也可以),版本随意,LZ用的是最新的。
Java 1.8
项目下载和安装
1. 安装Ant
Ant下载地址:
http://ant.apache.org/bindownload.cgi
解压即可。
2. 下载Zookeeper源码包
https://github.com/apache/zookeeper
解压。
或者git到本地
git clone https://github.com/apache/zookeeper
工程构建
1.利用Ant将Zookeeper源码编译成Eclipse工程。
打开cmd或者shell,切换到Zookeeper的解压目录下,即build.xml的当前目录下。用ant eclipse命令进行编译。
➜
zookeeper /Users/XXX/Projects/github/Apache/apache-ant-1.10.3/bin/ant eclipse
注: /Users/XXX/Projects/github/Apache/zookeeper-3.4.11是Zookeeper源码的解压目录, /Users/XXX/Projects/github/Apache/apache-ant-1.10.3是Ant的解压目录。因为我没有设置ANT_HOME及Path,这里就直接使用ant命令的绝对路径。
如下所示:出现“BUILD SUCCESSFUL”,即代表编译完成。
备注:
编译的时候出错
BUILD FAILED
/Users/XXX/Projects/github/Apache/zookeeper-3.4.11/build.xml:1866: Redirection detected from http to https. Protocol switch unsafe, not allowed.
解决方法:
在文件build.xml里,把
http://downloads.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
替换为:
https://cytranet.dl.sourceforge.net/project/ant-eclipse/ant-eclipse/1.0/ant-eclipse-1.0.bin.tar.bz2
启动服务
进入zookeeper/conf,复制zoo_sample.cfg,并改名为zoo.cfg,修改zoo.cfg里的dataDir为正确地址。
进入zookeeper/bin,执行zkServer.cmd 启动服务,将读取默认的配置路径zookeeper/conf/zoo.cfg来启动服务,默认监听2181端口
默认配置启动时,还启动了Jetty,占用了8080端口
客户端连接测试
执行zkCli.cmd,使用客户端连接上zk,可以使用基本命令ls。
使用Intellij IDEA导入工程,并启动zk
打开IDEA,导入工程,选择eclipse工程,来导入zookeeper。
打开zkServer.cmd,看下启动类是org.apache.zookeeper.server.quorum.QuorumPeerMain,在IDEA找到QuorumPeerMain,右键run,然后修改run配置
改完配置,将conf/log4j.properties配置拷贝到zookeeper/src/java/main路径下,这样log4j配置就能生效了,重新run,没报错,再用zkCli连接测试下没问题。