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的回调函数,保证能及时接收到服务节点信息。

相关推荐
YangVijay1 分钟前
CRTP(Curious Recurring Template Pattern)奇异递归模板模式的理解和应用
c++·crtp
Byte不洛4 分钟前
基于 C++ 手写 HTTP 服务器:从请求解析到响应构建全流程解析
linux·网络·c++·计算机网络·http
深蓝轨迹8 分钟前
Redis 分布式锁实现流程
数据库·redis·分布式
旖-旎9 分钟前
前缀和(和为K的子数组)(5)
c++·算法·leetcode·前缀和·哈希算法·散列表
不染尘.18 分钟前
背包问题BP
开发语言·c++·算法
2401_8747325320 分钟前
基于C++的爬虫框架
开发语言·c++·算法
lcj251124 分钟前
蓝桥杯C++:数据结构
数据结构·c++·算法
2401_8732046527 分钟前
C++代码重构实战
开发语言·c++·算法
xiaolang_8616_wjl32 分钟前
c++游戏_寻宝猎人_开源
开发语言·c++
暮冬-  Gentle°35 分钟前
C++中的策略模式应用
开发语言·c++·算法