ZooKeeper Client API 安装及使用指北
下载
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz
解压
tar -zxf zookeeper-3.5.4-beta.tar.gz
安装
cd zookeeper-3.5.4-beta/src/c/
./configure
make
sudo make install
到 make 这一步大概率会出现报错:
User
make[1]: Entering directory '/root/zookeeper-3.5.4-beta/src/c'
/bin/bash ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -Wdeclaration-after-statement -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c -o zookeeper.lo `test -f 'src/zookeeper.c' || echo './'`src/zookeeper.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I./include -I./tests -I./generated -Wall -Werror -Wdeclaration-after-statement -g -O2 -D_GNU_SOURCE -MT zookeeper.lo -MD -MP -MF .deps/zookeeper.Tpo -c src/zookeeper.c -fPIC -DPIC -o .libs/zookeeper.o
src/zookeeper.c: In function ‘print_completion_queue’:
src/zookeeper.c:2530:5: error: argument 1 null where non-null expected [-Werror=nonnull]2530 | fprintf(LOGSTREAM,"Completion queue: ");| ^~~~~~~
In file included from ./include/zookeeper.h:35,from src/zookeeper.c:28:
/usr/include/stdio.h:312:12: note: in a call to function ‘fprintf’ declared ‘nonnull’312 | extern int fprintf (FILE *__restrict __stream,| ^~~~~~~
src/zookeeper.c:2532:9: error: argument 1 null where non-null expected [-Werror=nonnull]2532 | fprintf(LOGSTREAM,"empty\n");| ^~~~~~~
/usr/include/stdio.h:312:12: note: in a call to function ‘fprintf’ declared ‘nonnull’312 | extern int fprintf (FILE *__restrict __stream,| ^~~~~~~
src/zookeeper.c:2538:9: error: argument 1 null where non-null expected [-Werror=nonnull]2538 | fprintf(LOGSTREAM,"%d,",cptr->xid);| ^~~~~~~
/usr/include/stdio.h:312:12: note: in a call to function ‘fprintf’ declared ‘nonnull’312 | extern int fprintf (FILE *__restrict __stream,| ^~~~~~~
src/zookeeper.c:2541:5: error: argument 1 null where non-null expected [-Werror=nonnull]2541 | fprintf(LOGSTREAM,"end\n");| ^~~~~~~
/usr/include/stdio.h:312:12: note: in a call to function ‘fprintf’ declared ‘nonnull’312 | extern int fprintf (FILE *__restrict __stream,| ^~~~~~~
cc1: all warnings being treated as errors
Makefile:1025: recipe for target 'zookeeper.lo' failed
make[1]: *** [zookeeper.lo] Error 1
make[1]: Leaving directory '/root/zookeeper-3.5.4-beta/src/c'
Makefile:684: recipe for target 'all' failed
make: *** [all] Error 2
主要原因还是linux的版本问题,这边用的是ubuntu18+gcc13,网上找了一圈解决方法少之又少,基本是通过换centos解决,其实只需要将当前目录 Makefile 文件中 -Werror 选项去除即可,这样报错就会变成警告。
本地集群搭建
新建三个文件夹,将原先zookeeper-3.5.4-beta中的所有文件分别复制到三个文件夹中。

修改zoo.cfg中的datDir和clientPort,同时添加集群的配置信息:
server.A = B:C:D
A是一个数字,代表是哪台机器,对应myid里面的值。
B是指这台服务器地址。
C是leader和follow之间进行交换信息的端口号。
D是当集群中的leader节点挂掉后,要进行重新选举leader,这个端口号就是用来执行选举的时候进行互相通信的端口号。

zkData文件夹中新建myid文件,标识是哪台机器,文件里填写数字即可。
通过bin文件夹下zkServer.sh start/stop/status管理服务端。zkCli.sh管理客户端。
什么是ZooKeeper?
Zookeeper实际上运行在Zab协议(ZooKeeper Atomic Broadcast)之上,Zab几乎与Raft是一样的。从Raft说起,Raft实际上就是一个库。你可以在一些更大的多副本系统中使用Raft库。但是Raft不是一个你可以直接交互的独立的服务,你必须要设计你自己的应用程序来与Raft库交互。所以这里有一个有趣的问题:是否有一些有用的,独立的,通用的系统可以帮助人们构建分布式系统?是否有这样的服务可以包装成一个任何人都可以使用的独立服务,并且极大的减轻构建分布式应用的痛苦?所以,对于一个通用的服务,API应该是怎样?Zookeeper可以被认为是一个通用的协调服务(General-Purpose Coordination Service)。
Zookeeper 允许客户端将读请求发送给任意副本,并由副本根据自己的状态来响应读请求。副本的 Log 可能并没有拥有最新的条目,所以尽管系统中可能有一些更新的数据,这个副本可能还是会返回旧的数据。
Zookeeper 的一致性保证:写请求是线性一致的、 FIFO 客户端序列(所有客户端发送的请求以一个特定的序列执行,通过 zxid 维护)。
使用场景
TODO
Client API
TODO
相关文章:
ZooKeeper Client API 安装及使用指北
下载 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.5.4-beta/zookeeper-3.5.4-beta.tar.gz解压 tar -zxf zookeeper-3.5.4-beta.tar.gz安装 cd zookeeper-3.5.4-beta/src/c/ ./configure make sudo make install到 make 这一步大概率会出现报错:…...
本机ping不通虚拟机
windows下finall shell连不上虚拟机了,之前是可以的,然后ping虚拟机,发现也ping不通,随后到处找问题。 在本地部分,控制面板 ——>网络和Internet——>网络连接 , 可以看到 VMnet1和Vmnet8虽然都是已…...
Linux cfdisk命令
Linux cfdisk命令用于磁盘分区。 cfdisk是用来磁盘分区的程序,它十分类似DOS的fdisk,具有互动式操作界面而非传统fdisk的问答式界面,您可以轻易地利用方向键来操控分区操作。 语法 cfdisk [-avz][-c <柱面数目>-h <磁头数目>-…...
实用学习网站和资料
github:https://github.com/GitHubDaily/GitHubDaily Linux操作手册: GitHub - abarrak/linux-sysops-handbook: Essentials of Linux system administration. 从零开始制作一个操作系统: GitHub - ruiers/os-tutorial-cn: 从零开始编写一个操作系统…...
【已解决】c++qt如何制作翻译供程序调用
本博文源于笔者正在编写的工具需要创建翻译文件,恰好将qt如何进行翻译,从零到结果进行读者查阅,并非常推荐读者进行收藏点赞,因为步步都很清晰,堪称胎教式c制作,而且内容还包括如何部署在windows下。堪称值…...
DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk
准备工作 因为时间的关系,我想到哪说到哪,可能没那么高的完成度。 但其实有心的人,看到这个标题,就关了本文自己能做了。 why和how to build debug version DPDK,见前两篇。这里我们准备开始。 首先,你有一台linux机…...
Python爬虫---解析---BeautifulSoup
BeautifulSoup简称:bs4 作用:解析和提取数据 1. 安装:pip install bs4 或pip install bs4 -i https://pypi.douban.com/simple(使用国内镜像下载) 注意:需要安装在python解释器相同的位置,例如…...
Argument list too long when copying files
for i in /path/to/dir/*; do cp "$i" /path/to/other/dir/; done...
configure
configure 配置软件./configure --prefix$PWD/output CCaarch64-linux-gcc --hostaarch64-linux --enable-shared --enable-staticconfig.sub 文件 这个文件用于确定主机系统的类型,并返回与该系统相关的标识符。它包含一系列 shell 函数,用于检测主机…...
HOJ 项目部署-前端定制 默认勾选显示标签、 在线编辑器主题和字号大小修改、增加一言功能 题目AC后礼花绽放
# 项目拉取地址: https://gitee.com/himitzh0730/hoj.git # 切换到hoj-vue目录执行以下命令 #安装依赖 npm install #运行服务 npm run serve #修改代码后构建项目到dist文件夹,到服务器docker-compose.yml中修改hoj-frontend文件映射即可 npm run build…...
Scikit-Learn线性回归(二)
Scikit-Learn线性回归二:多项式回归 1、多项式回归2、多项式回归的原理3、Scikit-Learn多项式回归3.1、Scikit-Learn多项式回归API1、多项式回归 线性回归研究的是一个自变量与一个因变量之间的回归问题。在实际应用中,并不是所有的情景都符合线性关系,大多数情况都是非线性…...
07 Vue3框架简介
文章目录 一、Vue3简介1. 简介2. 相关网站3. 前端技术对比4. JS前端框架5. Vue核心内容6. 使用方式 二、基础概念1. 创建一个应用2. 变量双向绑定(v-model)3. 条件控制(v-if)4. 数组遍历(v-for)5. 绑定事件…...
前端八股文(js篇)
一.强制类型转换规则 首先需要了解隐式转换所调用的函数。 当程序员显示调用Boolean(value),Number(value),String(value)完成的类型转换,叫做显示类型转换。 当通过new Boolean&…...
windows+ubuntu离线安装翻译软件有道词典
背景: 某些情况下,需要在无法连接互联网的电脑上翻译单词,句子以及段落,就需要能离线安装和翻译的翻译软件,具备一定的词库量,目前找到了《有道词典》。 windows 亲测,无法联网的win10中安装…...
DevC++ easyx实现视口编辑,在超过屏幕大小的地图上画点,与解决刮刮乐bug效果中理解C语言指针的意义
继上篇文案, DevC easyx实现地图拖动,超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动,但是当时野心不止,就想着一气能搓啥就继续搓啥,看着地图移动都搓…...
Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)
社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到,这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有:用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…...
时间与时间戳转换及android和ios对时间识别的区别
注意: "2021-05-01 12:53:59.55" 时间对象在 ios 中会出现 NaN-NaN1-NaN 需要将对象格式化为:"2021/05/01 12:53:59.55" 可同时兼容 android 和 ios。 //将某时间转时间戳 /* var time new Date("2021-05-01 12:53:59.55&qu…...
飞天使-k8s知识点7-kubernetes升级
文章目录 验证新版本有没有问题需要安装的版本微微 1.20.6.0kubeadm upgrade plan 验证新版本有没有问题 查看可用版本的包 现有的状态 查看版本 yum list kubeadm --showduplicates |grep 1.20 yum list kubelet --showduplicates |grep 1.20 yum list kubectl --showduplic…...
【Unity游戏制作】游戏模型导入之前需要注意的三个基本点
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
三列布局 css
实现如下图的三列布局: .box {width:1400px;margin:0 auto;padding-bottom:40px;> .left {float:left;width:180px;margin-top:100px;text-align:center;}> .center {float:left;margin-top:100px;margin-left:130px;item-box {float:left;text-align:left;…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...
js 设置3秒后执行
如何在JavaScript中延迟3秒执行操作 在JavaScript中,要设置一个操作在指定延迟后(例如3秒)执行,可以使用 setTimeout 函数。setTimeout 是JavaScript的核心计时器方法,它接受两个参数: 要执行的函数&…...
MeanFlow:何凯明新作,单步去噪图像生成新SOTA
1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架,旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念,这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换,显…...
