CentOS 7 基于C 连接ZooKeeper 客户端

news2024/12/28 6:20:58

前提条件:CentOS 7 编译ZooKeeper 客户端,请参考:CentOS 7 编译ZooKeeper 客户端

1、Docker 安装ZooKeeper

# docker 获取zookeeper 最新版本
docker pull zookeeper

# docker 容器包含镜像查看
docker iamges

# 准备zookeeper 镜像文件挂载对应文件目录
将它部署在 /usr/local/zookeeper 目录下:
cd /usr/local && mkdir zookeeper && cd zookeeper

创建data目录,用于挂载容器中的数据目录:
mkdir data

# docker 运行zookeeper
docker run -d -e TZ="Asia/Shanghai" -p 2181:2181 -v $PWD/data:/data --name zookeeper --restart always zookeeper

# 运行参数说明
-e TZ="Asia/Shanghai" # 指定上海时区 
-d # 表示在一直在后台运行容器
-p 2181:2181 # 对端口进行映射,将本地2181端口映射到容器内部的2181端口
--name # 设置创建的容器名称
-v # 将本地目录(文件)挂载到容器指定目录;
--restart always #始终重新启动zookeeper

# docker 查看zookeeper 运行状态
docker ps

2、CentOS 7 基于C 连接ZooKeeper Demo

在 /usr/local/source_code/zookeeper_demo/ 目录下,新增zookeeper_demo.c 文件,内容如下:

[root@localhost source_code]# cd zookeeper_demo/
[root@localhost zookeeper_demo]# ll
总用量 0
[root@localhost zookeeper_demo]# vi zookeeper_demo.c
[root@localhost zookeeper_demo]# ll
总用量 4
-rw-r--r--. 1 root root 575 10月 10 12:46 zookeeper_demo.c
#include <zookeeper/zookeeper.h>

   int main() {
      zhandle_t *zh;
      char buffer[512];
      int bufferlen=sizeof(buffer);

      // 初始化zookeeper客户端
      zh = zookeeper_init("localhost:2181", NULL, 30000, 0, 0, 0);

      if (zh == NULL) {
          printf("zookeeper 连接失败! \n");
      }else {
         printf("zookeeper 连接成功! \n");
        }

      // 获取节点数据
      int ret = zoo_get(zh, "/test", 0, buffer, &bufferlen, NULL);

      if (ret != ZOK) {
         // 处理错误
         printf("zookeeper 获取/test 节点数据异常! \n");
      }

      // do something with the node data

      // 关闭zookeeper客户端
      zookeeper_close(zh);

      return 0;
   }
  • 编译代码的时候需要加链接的库及库的路径,那么编译命令如下
gcc zookeeper_demo.c -o zookeeper_demo -L/usr/local/lib/ -lzookeeper_st

在执行的时候如果出现动态库无法加载,请进行如下配置。

在 /etc/ld.so.conf.d/ 目录下新建文件 usr-libs.conf ,内容是: /usr/local/lib
vim /etc/ld.so.conf.d/usr-libs.conf
  • 然后使用命令 /sbin/ldconfig 更新一下配置即可。
sbin/ldconfig

知识拓展:Linux 编译zookeeper 默认填充库文件地址和头文件地址

zookeeper 库文件地址:在/usr/local/lib目录下的libzookeeper_mt(集群模式)/libzookeeper_st(单列模式)

[root@localhost zookeeper_demo]# cd /usr/local/lib
[root@localhost lib]# ll
总用量 6820
-rw-r--r--. 1 root root  532172 10月 10 09:44 libhiredis.a
lrwxrwxrwx. 1 root root      19 10月 10 09:44 libhiredis.so -> libhiredis.so.1.1.0
lrwxrwxrwx. 1 root root      19 10月 10 09:44 libhiredis.so.1 -> libhiredis.so.1.1.0
-rwxr-xr-x. 1 root root  318840 10月 10 09:44 libhiredis.so.1.1.0
-rw-r--r--. 1 root root 2262492 9月   4 15:28 libjpeg.a
-rwxr-xr-x. 1 root root     918 9月   4 15:28 libjpeg.la
lrwxrwxrwx. 1 root root      16 9月   4 15:28 libjpeg.so -> libjpeg.so.9.5.0
lrwxrwxrwx. 1 root root      16 9月   4 15:28 libjpeg.so.9 -> libjpeg.so.9.5.0
-rwxr-xr-x. 1 root root 1237096 9月   4 15:28 libjpeg.so.9.5.0
-rw-r--r--. 1 root root  883484 8月  31 16:56 libzookeeper_mt.a
-rwxr-xr-x. 1 root root     987 8月  31 16:56 libzookeeper_mt.la
lrwxrwxrwx. 1 root root      24 8月  31 16:56 libzookeeper_mt.so -> libzookeeper_mt.so.2.0.0
lrwxrwxrwx. 1 root root      24 8月  31 16:56 libzookeeper_mt.so.2 -> libzookeeper_mt.so.2.0.0
-rwxr-xr-x. 1 root root  453944 8月  31 16:56 libzookeeper_mt.so.2.0.0
-rw-r--r--. 1 root root  835950 8月  31 16:56 libzookeeper_st.a
-rwxr-xr-x. 1 root root     977 8月  31 16:56 libzookeeper_st.la
lrwxrwxrwx. 1 root root      24 8月  31 16:56 libzookeeper_st.so -> libzookeeper_st.so.2.0.0
lrwxrwxrwx. 1 root root      24 8月  31 16:56 libzookeeper_st.so.2 -> libzookeeper_st.so.2.0.0
-rwxr-xr-x. 1 root root  433840 8月  31 16:56 libzookeeper_st.so.2.0.0
drwxr-xr-x. 2 root root      42 10月 10 09:44 pkgconfig

 zookeeper 头文件地址:在/usr/local/include目录下的zookeeper目录中。

[root@localhost zookeeper_demo]# cd /usr/local/include/
[root@localhost include]# ll
总用量 88
drwxr-xr-x. 3 root root   116 10月 10 09:44 hiredis
-rw-r--r--. 1 root root  3301 9月   4 15:28 jconfig.h
-rw-r--r--. 1 root root 14588 9月   4 15:28 jerror.h
-rw-r--r--. 1 root root 14925 9月   4 15:28 jmorecfg.h
-rw-r--r--. 1 root root 49408 9月   4 15:28 jpeglib.h
drwxr-xr-x. 2 root root   132 8月  31 16:56 zookeeper
[root@localhost include]# cd zookeeper/
[root@localhost zookeeper]# ll
总用量 108
-rw-r--r--. 1 root root  1361 8月  31 16:56 proto.h
-rw-r--r--. 1 root root  3077 8月  31 16:56 recordio.h
-rw-r--r--. 1 root root 72869 8月  31 16:56 zookeeper.h
-rw-r--r--. 1 root root 20328 8月  31 16:56 zookeeper.jute.h
-rw-r--r--. 1 root root  1747 8月  31 16:56 zookeeper_log.h
-rw-r--r--. 1 root root  1055 8月  31 16:56 zookeeper_version.h

3、ZooKeeper 核心方法

  • 查看ZooKeeper.h 头文件涉及核心方法
[root@localhost zookeeper]# pwd
/usr/local/include/zookeeper
[root@localhost zookeeper]# cat zookeeper.h
********************

 

个人认为的核心方法如下:

1. create():此方法由客户端使用来创建新的znode。它需要znode的路径和数据作为参数。
 
2. exists():这个方法由客户端用来检查特定的znode是否存在。它需要znode的路径作为参数。

3. getData():此方法用于从特定的znode获取数据。它需要znode路径作为参数。

4. setData():这个方法用于设置特定znode的数据。它需要znode路径作为参数。

5. getChildren():此方法用于得到特定znode的所有子节点。它需要znode路径作为参数。

6. delete():这个方法允许客户端删除一个特定的znode。它需要znode的路径作为参数。

7. sync():此方法用于同步znode的状态到当前客户端。

8. close():此方法用于关闭客户端与ZooKeeper服务的连接。

9. addAuthInfo():在此ZooKeeper会话上添加授权信息。

10. getState():返回ZooKeeper客户端的状态。

以上这些方法的目的是让客户端能够在ZooKeeper的znode树中浏览、读写数据,监控znode状态的改变等等。

备注:ZooKeeper API中的所有读方法get*在成功返回时都会提供一个Stat对象。Stat对象包含了关于znode的元数据,比如它的czxid、mzxid、pzxid、version等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1084952.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

相机噪声评估

当拥有一个相机&#xff0c;并且写了一个降噪的算法&#xff0c;想要测试降噪的应用效果。 相机在光线不足的情况下产生噪点的原因主要与以下几个因素有关&#xff1a; 感光元件的工作原理&#xff1a;相机的图像传感器是由数百万甚至数千万的感光元件&#xff08;如CMOS或CC…

论文研读|Robust Watermarking of Neural Network with Exponential Weighting

目录 论文信息文章简介研究动机查询修改攻击Auto-Encoder训练水印图像检测检测结果 水印图像重构 研究方法水印生成水印嵌入版权验证 实验结果保真度&#xff08;Fidelity&#xff09;有效性&#xff08;Effectiveness&#xff09;&鲁棒性&#xff08;Robustness&#xff0…

Apipost自动化测试

Apipost提供可视化的API自动化测试功能&#xff0c;使用Apipost研发人员可以设计、调试接口&#xff0c;测试人员可以基于同一数据源进行测试&#xff0c;Apipost 接口自动化功能在上次更新中进行了逻辑调整&#xff0c;带来更好的交互操作、更多的控制器选择&#xff0c;同时新…

【数据结构】深入探讨二叉树的遍历和分治思想(一)

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章主要讲述二叉树的递归结构及分治算法的思想。 目录&#xff1a; &#x1f30d;前言&#xff1a;&#x1f30d;…

使用react-router-dom在新标签页打开链接,而不是本页跳转

一般单页面应用&#xff0c;当你使用useNavigate时候的时候&#xff0c;用useNavigate来跳转&#xff0c;只能是在当前页面刷新跳转的&#xff0c;要想单独在一个tab页打开新页面&#xff0c;大概用三种方式。 第一种 使用link标签&#xff0c;配合target实现 <Link to&q…

求臻医学官网焕新升级

嗨&#xff0c;我的朋友们~ 求臻医学官网全面焕新升级了&#xff01; 新官网能否带给您更优质、更便捷的 在线服务体验&#xff1f; 来试试看吧&#xff01; “点击重新认识下我吧”&#x1f447; www.chosenmedtech.com 全新视觉界面 不一样的体验 新官网采用简洁大气的…

C++ PCL点云局部颜色变换

程序示例精选 C PCL点云局部颜色变换 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《C PCL点云局部颜色变换》编写代码&#xff0c;代码整洁&#xff0c;规则&#xff0c;易读。 学习与应用…

asp.net售后维修管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 售后维修管理系统 是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语 言开发 asp.net售后维修管理系统1 二、…

网络安全就业形势怎么样?

泻药&#xff0c;以下都是我本人的肺腑之言&#xff0c;是答主深耕职场多年&#xff0c;转战数家公司总结周围朋友的从业经验才总结出来的行业真相&#xff0c;真心希望帮助到还没有步入职场的大家&#xff0c;尤其是24届的应届毕业生&#xff0c;多掌握些就业信息就能少走一些…

QQ打不开找不到VCRUNTIME140.DLL怎么办?VCRUNTIME140.DLL修复方法分享

在现代社会&#xff0c;即时通讯软件已经成为我们日常生活和工作中不可或缺的一部分。其中&#xff0c;QQ作为中国最受欢迎的即时通讯软件之一&#xff0c;为我们提供了方便快捷的交流方式。然而&#xff0c;在使用过程中&#xff0c;我们可能会遇到各种问题&#xff0c;其中之…

DOCKER本地仓库

概述 随着docker的应用越来越多&#xff0c;安装部署越来越方便&#xff0c;批量自动化的镜像生成和发布都需要docker仓库的本地化应用。 试用了docker的本地仓库功能&#xff0c;简单易上手&#xff0c;记录下来以备后用。 环境 centos&#xff1a;CentOS release 7.0 (F…

2023年中国视频流媒体行业发展历程及趋势分析:未来市场规模趋于平稳[图]

随着移动通信的发展和视频内容产业供给端的繁荣&#xff0c;流媒体视频平台已经成为互联网用户上网时长最长的应用之一。在线视频行业经历了十几年的规范发展阶段&#xff0c;在各大头部平台百花齐放的现状下&#xff0c;难以实现一家独大&#xff0c;但部分平台有领先优势&…

VP记录——The 2021 CCPC Weihai Onsite

网址 2021CCPC威海 赛时过题与罚时 A.Goodbye, Ziyin! 签到题&#xff0c;队友写的 #include<bits/stdc.h> using namespace std; int cnt[10], de[1000010]; int main() {int n;cin >> n;for(int i 1; i < n; i) {int u, v;scanf("%d %d", &…

Spring Boot自动加载

问&#xff1a;自动装配如何实现的&#xff1f; 答&#xff1a;简单来说就是自动去把第三方组件的Bean装载到IOC容器中&#xff0c;不需要开发人员再去写Bean相关的配置&#xff0c;在springboot应用里面只需要在启动类上去加上SpringBootApplication注解&#xff0c;就可以去实…

自动售货机销售数据分析与应用

⭐简单说两句⭐ 作者&#xff1a;后端小知识 CSDN个人主页&#xff1a;后端小知识 &#x1f50e;GZH&#xff1a;后端小知识 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; 摘要&#xff1a; 本案例将主要结合自动售货机的实际情况&#xff0…

天软特色因子看板(2023.10 第04期)

该因子看板跟踪天软特色因子A05005(近一月单笔流通金额占比(%)&#xff0c;该因子为近一个月单笔流通金额占比因子&#xff0c;用以刻画股票在收盘时&#xff0c;主力资金在总交易金额中所占的比重。。 今日为该因子跟踪第04期&#xff0c;跟踪其在SW801010 (申万农林牧渔) 中的…

浅述TSINGSEE视频技术与视频智能分析能力在城市治理中的典型应用场景

TSINGSEE青犀视频以“视频汇聚视频智能分析”为支撑&#xff0c;面向各委办局提供城市市域治理场景、城市基层治理场景的视频数字化、智能化、智慧化应用&#xff0c;推进城市治理体系和治理能力现代化。 安防视频汇聚系统EasyCVR视频综合管理平台支持接入与整合已建的社会视频…

MySQL 1 数据库概述知识

一、数据库概述 1. 为什么要使用数据库 持久化(persistence)&#xff1a;把数据保存到可掉电式存储设备中以供之后使用。大多数情况下&#xff0c;特别是企业级应用&#xff0c;数据持久化意味着将内存中的数据保存到硬盘上加以“固化”&#xff0c;而持久化的实现过程大多通…

美妆SDK哪家便宜?

在今天的数字化时代&#xff0c;人工智能和机器学习正在改变我们的生活。特别是在美妆行业&#xff0c;这些技术的应用已经开始改变消费者的购物习惯和企业的营销策略。为了满足这个需求&#xff0c;美摄推出了一款美妆SDK&#xff0c;专为企业提供技术支持。一、美摄美妆SDK具…