Zookeeper 最新稳定版本 3.8.4 服务安装与原生 C 静态库编译

news/2024/10/17 4:57:54/

依赖

  1. jdk

Zookeeper 服务由 Java 语言开发,需要 jdk 环境,请确保进行下面步骤之前先安装 jdk。

GNU/Linux 系统可以通过包管理工具直接安装 jdk 环境,例如 ubantu 可以直接通过以下命令安装:

sudo apt update
sudo apt install default-jdk

可以通过 java -version 验证 jdk 环境是否安装成功。

  1. 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 包。

tar -xzf /path/apache-zookeeper-3.8.4-bin.tar.gz

先创建一个用于存储 zookeeper 数据的文件夹,路径取决于你的个人需求,这里以 /path/zookeeper/data 为例。

mkdir /path/zookeeper/data

切换目录到 apache-zookeeper-3.8.4-bin/conf 配置 zookeeper 数据存储的文件夹。

cd /path/apache-zookeeper-3.8.4-bin/conf

zookeeper 运行时会寻找名为 zoo.cfg 的配置文件,所以需要将 zoo_sample.cfg 改名为 zoo.cfg

mv zoo_sample.cfg zoo.cfg

编辑 zoo.cfg

vim zoo.cfg

找到文件中的 dirData 并修改为你为 zookeeper 数据存储的文件夹。

dataDir=/path/zookeeper/data

切换到 apache-zookeeper-3.8.4-bin/bin 目录。

cd /path/apache-zookeeper-3.8.4-bin/bin

启动 zookeeper 服务。

./zkServer.sh start

查看 zookeeper 进程是否存在。

ps -ef | grep zookeeper

注意:如果 zookeeper 进程存在应该是一大串的字符而非一行字符,一行字符大概率是终端命令的进程。

查看 2181 端口是否正在监听。

lsof -i:2181

两项检查完成说明zookeeper进程已经存在,我们可以尝试启动客户端查看是否能正常建立连接。

保持在 apache-zookeeper-3.8.4-bin/bin 目录下,如果你刚刚没有切换目录即当前目录:

./zkCli.sh

出现以下内容即成功建立连接:

...
JLine support is enabled
[zk: localhost:2181(CONNECTED) 0] 

输入 quit 退出客户端:

[zk: localhost:2181(CONNECTED) 0] quit

原生 C 静态库编译

依赖

  1. mvn

需要确保 mvn 的存在,因为需要使用 mvn compile 命令。

GNU/Linux 系统可以使用包管理工具进行下载,例如在 ubantu 中可以通过以下命令安装:

sudo apt-update
sudo apt install maven

完成上面命令后使用 mvn -v 检查是否安装成功。

  1. autoreconf

GNU/Linux 一般自带 autoconf,可以使用以下命令查看是否存在:

autoconf --version

并且确保您autoconf版本是2.59或更高版本

  1. cppunit

cppunit 是 cpp 的单元测试框架,在执行 ./configure 的时候需要用到,ubantu 可以通过以下命令安装:

sudo apt update
sudo apt install libcppunit-dev

编译

切换到 apache-zookeeper-3.8.4-bin/zookeeper-jute 目录

cd /path/apache-zookeeper-3.8.4-bin/zookeeper-jute

运行如下命令:

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:

cd apache-zookeeper-3.8.4-bin/zookeeper-client/zookeeper-client-c

运行如下命令:

autoreconf -if
./configure
make
sudo make install

完成上面过程后检查 /usr/local/lib 目录是否存在静态库 libzookeeper_mt.* 和 libzookeeper_st.a.*。(*为占位符,可以是 so、so.2等)

cd /usr/local/lib
ls

如果存在则基本说明安装成功了。

我们可以在我们的 c/cpp 源文件中使用 #include <zookeeper/zookeeper.h> 来使用 C API。

想了解更多C API的使用可以看这里:ZooKeeper C client API。


http://www.ppmy.cn/news/1466255.html

相关文章

请说出vue.cli项目中src目录每个文件夹和文件的用法

在Vue CLI项目中&#xff0c;src目录是存放项目源码及需要引用的资源文件的主要位置。以下是src目录下常见文件夹和文件的用法&#xff1a; components 用途&#xff1a;存放可重用的Vue组件。这些组件通常用于在多个页面或布局中共享UI和功能。特点&#xff1a;组件应该是模块…

二级指针简单介绍

我们之前学习的&#xff1a;变量的地址是存入指针变量中的&#xff0c;然而指针变量也是变量&#xff0c;是变量就有地址&#xff0c;那么指针变量的地址存放在哪里 &#xff1f; 这也就是二级指针 #include<stdio.h> int main() {int a10;int*p&a;int**pp&p;re…

上位机图像处理和嵌入式模块部署(f407 mcu中tf卡读写和fatfs挂载)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很早之前&#xff0c;个人对tf卡并不是很重视&#xff0c;觉得它就是一个存储工具而已。后来在移植v3s芯片的时候&#xff0c;才发现很多的soc其实…

Web安全:软件开发的安全问题与解决方案

「作者简介」&#xff1a;2022年北京冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础对安全知识体系进行总结与归纳&#xff0c;著作适用于快速入门的 《网络安全自学教程》&#xff0c;内容涵盖系统安全、信息收集等…

讲解如何使用RAG(检索增强生成)和LLM(大语言模型)来构建一个法律咨询网站。

一、准备工作 1. 注册OpenAI API 首先,注册OpenAI并获取API密钥。 2. 环境配置 安装必要的Python库: pip install openai faiss-cpu sentence-transformers flask二、设计系统架构 整个系统将包括以下几个部分: 前端:用户输入问题和上传文件的界面。后端:处理用户请…

CentOS开启ftp并使用filezilla连接

1. 安装vsftpd sudo yum install vsftpd -y 2. 启动ftp服务 service vsftpd start 3. 加入开机启动 chkconfig vsftpd on 4. 开启端口 sudo firewall-cmd --zonepublic --add-port21/tcp --permanent 5. 重启防火墙 sudo firewall-cmd --reload 6. 查询有哪些端口是开…

C++的算法:动态规划算法

动态规划(Dynamic Programming,简称DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式来求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。 动态规划的基本步骤: 1. 描述问题的最优解的结构:确定问题的…

Java数据结构与算法(有向图)

前言 有向图&#xff08;Directed Graph&#xff09;是一种由顶点和有方向的边组成的图数据结构。 实现原理 使用邻接表表示法实现有向图相对简单明了&#xff0c;步骤也相对简单。 1:首先创建有向图 2.创建顶点 3.顶点间创建边 具体代码实现 package test13;import ja…