zookeeper介绍 和 编译踩坑

zookeeper 分布式协调服务

ZooKeeper原理及介绍 - 鹿泉 - 博客园

Zookeeper是在分布式环境中应用非常广泛,它的优秀功能很多,比如分布式环境中全局命名服务,服务注册中心,全局分布式锁等等。 本项目使用其分布式服务配置中心,记录所有的服务器的ip和端口号。它是一个为分布式应用提供一致性协调服务的中间件,对微服务的 注册与发现过程 解除 客户端和服务提供者的紧耦合。

编译

zookeeper已经提供了原生的C/C++和Java API开发接口,需要通过源码编译生成。也就是会所linux下的C++开发,需要手动编译zookeeper的client,生成库文件。

新版本的zookeeper源码编译非常复杂,设计Java的ant/maven等。故编译老版本的3.4.10版本,文件附在文章末尾。

但新版本的C++编译器会对老版本的源码报错,故更改MakeFile文件的第548行,忽略报错。原文链接如下:Linux安装zookeeper原生C API接口出现的make编译错误_error: '%d' directive writing between 1 and 5 byte-CSDN博客

进入解压目录的src/c下面,过程如下:

bash 复制代码
~/package/zookeeper-3.4.10/src/c$ sudo ./configure

~/package/zookeeper-3.4.10/src/c$ sudo make

~/package/zookeeper-3.4.10/src/c$ sudo make install
使用(假设zk为根目录)
  • 可以在zk/conf/zoo.conf配置文件中更改zk的数据存放目录,可以设置为zk/data目录
  • 默认工作端口2181
  • zk/bin/zkServer.sh start 启动服务
  • zk/bin/zkCli.sh使用客户端连接服务
  • zk客户端常用命令:ls使用绝对目录、get查看节点数据、create创建节点(父节点需存在)、set修改节点的值、delete删除节点(需无子节点)
zk的数据组织 - znode节点
  • zk的注册中心保存了能提供的服务的名称 ,以及URL。
  • 首先这些服务会在注册中心进行注册,当客户端来查询的时候,只需要给出名称,注册中心就会给出一个URL。
  • 所有的客户端在访问服务前,都需要向这个注册中心进行询问,以获得最新的地址。
  • 注册中心可以是树形结构,每个服务下面有若干节点,每个节点表示服务的实例。
  • 注册中心和各个服务实例直接建立Session,要求实例们定期发送心跳,一旦特定时间收不到心跳,则认为实例挂了,删除该实例。
zk的watcher机制

一种事件回调机制,zkserver节点信息发生改变时,会调用zkclient的回调函数,保证能及时接收到服务节点信息。

相关推荐
半杯咖啡半行码25 分钟前
C++ 编程与 STL 模板:从泛型编程到内存安全详解
开发语言·c++
xh didida1 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
垆边人似月.2 小时前
华为机试题 :两数之和
c++·算法·华为
个 人 练 习 生2 小时前
C++ string 类模拟实现:从底层理解字符串(上)
开发语言·c++·经验分享·学习·程序人生
垆边人似月.2 小时前
华为机试题 :有效的括号
c++·算法·华为
坤坤子吖2 小时前
C++智能指针:RAII、shared_ptr与内存泄漏
开发语言·c++·笔记·学习
方方洛2 小时前
ray教程-00-前言与导读
人工智能·分布式·机器学习
方方洛2 小时前
ray教程-01-认识Ray
人工智能·分布式·机器学习
神仙别闹2 小时前
基于C++实现的贪吃蛇游戏平台
java·c++·游戏
王老师青少年编程3 小时前
2026年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛