依赖
- jdk
Zookeeper 服务由 Java 语言开发,需要 jdk 环境,请确保进行下面步骤之前先安装 jdk。
GNU/Linux 系统可以通过包管理工具直接安装 jdk 环境,例如 ubantu 可以直接通过以下命令安装:
shell
sudo apt update
sudo apt install default-jdk
可以通过 java -version
验证 jdk 环境是否安装成功。
- Zookeeper 压缩包
apache-zookeeper-3.8.4-bin.tar.gz包含可以在 jdk 环境下直接运行的 Zookeeper 服务(通过 zkServer.sh 脚本)和 终端运行的 Zookeeper 客户端(zkCli.sh)。
apache-zookeeper-3.8.4.tar.gz包含 C 原生API的源代码(zookeeper-client-c),我们通过这个包编译C/C++编程需要的静态库。
运行 Zookeeper 服务
注意: /path 代表 apache-zookeeper-3.8.4-bin.tar.gz 的所在的文件夹路径,请在进行以下步骤时替换为 apache-zookeeper-3.8.4-bin.tar.gz 在你系统中的目录(或者直接切换到该目录下,并省略前缀 /path/)。
解压 apache-zookeeper-3.8.4-bin.tar.gz 包。
shell
tar -xzf /path/apache-zookeeper-3.8.4-bin.tar.gz
先创建一个用于存储 zookeeper 数据的文件夹,路径取决于你的个人需求,这里以 /path/zookeeper/data 为例。
shell
mkdir /path/zookeeper/data
切换目录到 apache-zookeeper-3.8.4-bin/conf 配置 zookeeper 数据存储的文件夹。
shell
cd /path/apache-zookeeper-3.8.4-bin/conf
zookeeper 运行时会寻找名为 zoo.cfg 的配置文件,所以需要将 zoo_sample.cfg 改名为 zoo.cfg
shell
mv zoo_sample.cfg zoo.cfg
编辑 zoo.cfg
shell
vim zoo.cfg
找到文件中的 dirData 并修改为你为 zookeeper 数据存储的文件夹。
shell
dataDir=/path/zookeeper/data
切换到 apache-zookeeper-3.8.4-bin/bin 目录。
shell
cd /path/apache-zookeeper-3.8.4-bin/bin
启动 zookeeper 服务。
shell
./zkServer.sh start
查看 zookeeper 进程是否存在。
shell
ps -ef | grep zookeeper
注意:如果 zookeeper 进程存在应该是一大串的字符而非一行字符,一行字符大概率是终端命令的进程。
查看 2181 端口是否正在监听。
shell
lsof -i:2181
两项检查完成说明zookeeper进程已经存在,我们可以尝试启动客户端查看是否能正常建立连接。
保持在 apache-zookeeper-3.8.4-bin/bin 目录下,如果你刚刚没有切换目录即当前目录:
shell
./zkCli.sh
出现以下内容即成功建立连接:
shell
...
JLine support is enabled
[zk: localhost:2181(CONNECTED) 0]
输入 quit 退出客户端:
shell
[zk: localhost:2181(CONNECTED) 0] quit
原生 C 静态库编译
依赖
- mvn
需要确保 mvn 的存在,因为需要使用 mvn compile 命令。
GNU/Linux 系统可以使用包管理工具进行下载,例如在 ubantu 中可以通过以下命令安装:
shell
sudo apt-update
sudo apt install maven
完成上面命令后使用 mvn -v
检查是否安装成功。
- autoreconf
GNU/Linux 一般自带 autoconf,可以使用以下命令查看是否存在:
shell
autoconf --version
并且确保您autoconf版本是2.59或更高版本
- cppunit
cppunit 是 cpp 的单元测试框架,在执行 ./configure 的时候需要用到,ubantu 可以通过以下命令安装:
shell
sudo apt update
sudo apt install libcppunit-dev
编译
切换到 apache-zookeeper-3.8.4-bin/zookeeper-jute 目录
shell
cd /path/apache-zookeeper-3.8.4-bin/zookeeper-jute
运行如下命令:
shell
mvn compile
这将在 apache-zookeeper-3.8.4-bin/zookeeper-client/zookeeper-client-c 下创建一个名为 generated 的目录。
切换到 apache-zookeeper-3.8.4-bin/zookeeper-client/zookeeper-client-c:
shell
cd apache-zookeeper-3.8.4-bin/zookeeper-client/zookeeper-client-c
运行如下命令:
cpp
autoreconf -if
./configure
make
sudo make install
完成上面过程后检查 /usr/local/lib 目录是否存在静态库 libzookeeper_mt.* 和 libzookeeper_st.a.*。(*为占位符,可以是 so、so.2等)
shell
cd /usr/local/lib
ls
如果存在则基本说明安装成功了。
我们可以在我们的 c/cpp 源文件中使用 #include <zookeeper/zookeeper.h>
来使用 C API。
想了解更多C API的使用可以看这里:ZooKeeper C client API。