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

相关推荐
Sakura_j_h_2 小时前
EasyEDA PCB 快速设计Skills
c++·python·github
程序喵大人3 小时前
【C++入门】内存模型与资源管理 - 09 shared_ptr 和 weak_ptr 解决共享,也带来代价
开发语言·c++·资源管理·智能指针·内存模型
jimy15 小时前
C++ 中的 `T&&`:右值引用与转发引用
开发语言·c++
会编程的小孩7 小时前
C++ 定时器
c++
沫璃染墨8 小时前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
揽星河..9 小时前
【C语言】分支和循环
c语言·c++·算法
Fuyo_111911 小时前
C++ AVL树保姆级详解:从平衡因子到四大旋转机制
java·c++·算法
傲世仙尊12 小时前
继承-类设计层次复用切片转换与菱形继承的死结
c++
架构师伯子明12 小时前
FFmpeg C++学习(一):编译和demo
开发语言·c++·学习
纪念 22912 小时前
C++算法(六)
开发语言·c++·算法