zookeeper的API简单编程一

zookeeper C API实例 之前一直用zookeeper的java API,最近要用C开发,所以看了C的API及实现 使用zookeeper C API 的步骤: (1)安装zookeeper,直接下载,解压,配置文件即可 (2)安装C API 进入./zookeeper/src/c目录 ./configure make make install (3)编写调用函数,可以参考下面的例子 (4)编译的时候注意 阅读详情
一.zookeeper的安装

从https://archive.apache.org/dist/zookeeper/下载源码 然后解压zookeeper-3.4.11

在目录/conf下复制zoo_sample.cfg 并重命名为zoo.cfg,并在其内部添加配置

server.1=lanc05:2888:3888
server.2=lanc06:2888:3888
server.3=lanc07:2888:3888

这样就配置好了,有多少zookeeper服务器,就添加多少台,每一台配置都是一样的

然后就是启动,在源码目录zookeeper-3.4.11/bin/下有两个脚本zkServer.sh和zkCli.sh

./zkServer.sh start //启动server
./zkServer.sh status //查看状态
./zkCli.sh  //启动客户端连接
服务器的状态有两个角色就是 leader和follower,leader只能有一个通过选举获得,
二.相关命令

使用./zkCli.sh 客户端连接服务器时可以使用简单的命令来操作

可以使用help来查看所有的命令如下图所示:


但常用的有ls、get、set、create、delete、rmr等,很多命令中都有watch(监听器),这个监听只能监听一次事件,下次再触发就不会再被监听到

ls /  //查看根目录下
create /xxx iii //在根目录下创建节点xxx,并设置数据为iii
get /xxx 获取xxx节点的数据和该节点的相关信息
set /xxx llll //将xxx节点的数据修改为llll
delete /xxx 删除节点xxx,该节点下没有子节点
rmr /xxx //如果该节点下含有子节点就得使用rmr
三.API的相关代码

以下是简单的客户端PAI的操作,包括,连接zk、创建znode、删除、更改、获取数据等以及监听器等

package bigdata.zk;


import java.util.List;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.data.Stat;
import org.junit.Before;
import org.junit.Test;

public class simpleZKClient {

	//如果在zookeeper目录下conf下的的配置文件zoo.cfg内配置绑定的为主机名,则此处链接只能为主机名,
	//若配置为IP ,则智能写IP ,否则链接失败,因此只能和zoo.cfg配置保持一致
	private static final String connectString = "lanc05:2181,lanc06:2181,lanc07:2181";
	private static final int sessionTimeout =2000;
	
	ZooKeeper zKclient = null;
	
	@Before
	public void init() throws Exception{	
			zKclient = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
			@Override
			public void process(WatchedEvent event) {//监听器只能生效一次
				// 收到事件通知后的回调函数 (也就是自己的事件处理逻辑)
				System.out.println( event.getType() +  "*******" + event.getPath());	
				//为了循环监听事件的操作,因此要再次获取节点,这样就实现了每次修改节点后,都会打印事件,上面一行
				try {
					zKclient.getChildren("/", true);
				} catch (Exception e) {
				}
			}
		});		
	}
		/**
		 * 数据的增删改查
		 * @throws InterruptedException 
		 * @throws KeeperException 
		 * */
		
	// create znode
	@Test
	public void testcreat() throws KeeperException, InterruptedException{
//		参数:
//		1:节点的路径,必须是根节点下的绝对路径
//		2:创建节点的数据,为byte[]类型
//		3.节点的权限,常用的为
//		4.节点的类型,总公司个类型		
		String nodecreate = zKclient.create("/myeclipse", "hello zookeper".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
		//上传的数据可以是任何数据,单必须转换成byte
	}
	
	//判断zonde是否存在
	@Test
	public void testexist()throws Exception {
		//Stat 是返回的值,里面时所有的元数据的值,如果不存在则是null
		Stat exists = zKclient.exists("/myeclipse", false);
		System.out.println(exists == null ? "not exist " : "exit");
	}
	
	// get znode
	@Test
	public void getznode() throws Exception{
		
		List<String> children = zKclient.getChildren("/", true); //使用true 就是使用上面的监听器
		for(String child:children){
			System.out.println(child);			
		}
		Thread.sleep(Long.MAX_VALUE);//程序阻塞在这儿,等待事件
	}
	
	//获取zode的数据
	@Test
	//public void getdata() throws KeeperException, InterruptedException { //两个运行的结果一样
	public void getdata() throws Exception {
		byte[] data = zKclient.getData("/myeclipse", false, new Stat());//可以注册监听器,也可以不监听,最后一个参数为null就可以,这样写等同于null
		System.out.println(new String(data));
		
	}
	
	// delete zode的数据
		@Test
		//public void getdata() throws KeeperException, InterruptedException { //两个运行的结果一样
	public void deleteznode() throws Exception {
		//参数2是指定要删除的版本,-1为删除所有的版本
		zKclient.delete("/myeclipse", -1);
			
	}
		// delete zode的数据
	@Test
	public void setdata() throws Exception {
		//参数2是指定要删除的版本,-1为删除所有的版本
		zKclient.setData("/hello", "ccccccccc".getBytes(), -1);
		byte[] data = zKclient.getData("/hello", false, null);
		System.out.println(new String(data));			
	}						
}
转载声明:https://blog.youkuaiyun.com/hubbybob1/article/details/80657003


Zookeeper C API学习总结 Zookeeper C API客户端使用C语言开发,zookeeper提供了两个库,zookeeper_st(单线程库)以及zookeeper_mt(多线程库)。zookeeper_st提供了异步API和集成在应用程序用来实现事件循环的回调函数,该库是为了支持pthread库不支持或是不稳定的系统而存在。使用过程中需要通过zoo_interest以及zoo_process实现事件处理以及通知机制。 阅读详情

相关推荐

Zookeeper学习:Zookeeper 的 API 使用

1. API 相关介绍 Zookeeper作为一个分布式框架,主要用来解决分布式一致性问题,它提供了简单的分布式原语,并且对多种编程语言提供了APl,Zooeeper API 共包含五个包,分别为∶ org.apache.zookeeper org.apache.zookeeper.data org.apache.zookeeper.server org.apache.zookeeper. server.quorum org.apache.zookeeper.server.upgrade 其中 org.

小松de博客 859

初始Zookeeper

先前的章节讨论了分布式系统的特点,并且最大的特点莫过于协调。在上述中,我们也用一个最常见的例子主从模式来介绍了zookeeper的一些基本情况,下面让我们来深入的了解一下zookeeper吧!Zookeeper基本特点一些常用于协调的语义通常都是在多个应用之间是共享的。一种方式是创建这种语义的实例并且操作这些实例。例如我们可以说,分布式锁构成了重要的语义,并且暴漏出接口去创建、获取和释放锁这样来设

2375

RV1126上YOLOv8部署实战:从模型转换到板端推理的完整避坑指南

本文提供了在瑞芯微RV1126芯片上部署YOLOv8目标识别算法的完整实战指南。内容涵盖从模型转换、环境搭建到板端推理代码编写的全流程,重点解析了RKNN-Toolkit使用、量化配置、内存优化及后处理实现等关键环节的常见问题与解决方案,旨在帮助开发者高效避坑,实现边缘AI应用的稳定落地。

pz89012345的博客 568

分布式服务下的注册服务zookeeper利与弊

注册中心需求分析及关键设计考量: 注册中心是 CP 还是 AP 系统? 一个就是 CP 系统,追求数据的强一致性。还有一个是 AP 系统,追求高可用与最终一致。 可以参考图书《从Paxos到Zookeeper:分布式一致性原理与实践》 ...

小诚信驿站 1617

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 545

基于ZYNQ7020芯片(黑金开发板AX7020)之AXI-FULL DDR的PL与PS交互操作。

在该工程中我们使用了PS端的串口接收功能,PS端串口接收和发送分别有一个64字节的FIFO,但是因为串口接收阈值设置为16,所以固定接收16个字节数据后才会发生中断。此测试工程得到以前知识的总结和各大网友的支持,只希望可以为学习的你更进一步,大家一起学习才是真的开心。加油,国产芯片之路。

landyjzlai的博客 3194

说说zookeeper【壹】_基础知识

本系列文章内容大部分总结自倪超老师的《从Paxos到Zookeeper分布式一致性原理与实践》,如果想了解zookeeper,那么读着一本书就够了。链接如下: 本文先介绍下什么是zookeeper。 zookeeper介绍 zookeeper是一个开发源码的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。其设计目标是将那些复杂且容易

xinzun的专栏 437

数学建模美赛O奖论文研读启示录——从模仿开始

数学建模美赛O奖论文哪些地方比较出彩?我们可以从中学到什么东西?可以从哪些地方进行模仿?我总结了一些O奖论文里我认为比较好的地方,跟大家一起学习交流!

小宇的修炼之路 5429

ZooKeeper系列之九:ZooKeeper API简介及编程

<br /><br />1)ZooKeeper API简介<br />ZooKeeper API共包含5个包,分别为:org.apache.zookeeper,org.apache.zookeeper.data,org.apache.zookeeper.server,org.apache.zookeeper.server.quorum和org.apache.zookeeper.server.upgrade。其中org.apache.zookeeper包含ZooKeeper类,它我们编程时最常用的类文件。<b

张林林|深蓝(Linlin Zhang,shenlan211314) 的专栏 3万+

QEMU pcie config空间访问机制

而pci_host_conf/data_le_ops的定义是在hw/pci/pci-host.c里,对于0xCF8端口的处理,因为是地址选通,所以只需要在write的时候记录、read的时候返回记录的值即可。而pci_host_config_write/read_common接口,在前256Bconfig空间的模拟中,也同样是会调用这个接口,所以后续的处理都是一样的。这是真实的硬件设计,而对于QEMU+KVM的虚机场景,显然是要基于硬件实现和虚拟化的需求设计虚机访问config空间的完整流程。

leiyanjie8995的博客 1953

优秀的 Verilog/FPGA开源项目介绍(二十七)- 小型CPU

介绍在FPGA上实现一个CPU是一个令人兴奋的事情,但是太复杂的CPU实现起来太难,而且不适合去了解计算机的架构,所以今天介绍一些小型的CPU,比如8051、MIPS、MSP430等~关于RISC-V的项目,请查看《优秀的 Verilog/FPGA开源项目介绍(二)-RISC-V》ZipCPUhttp://zipcpu.com/about/zipcpu.html项目介绍Z...

OpenFPGA的博客 2577

Zookeeper的一些Java API简单操作

阅读目录一、启动Zookeeper二、Zookeeper命令行操作三、Zookeeper Java API操作1、pom.xml文件2、创建节点3、修改数据4、获取数据5、删除节点 一、启动Zookeeper 进入zookeeper安装目录下的bin目录内,通过命令启动 ./zkServer.sh start 通过命令查看节点状态 ./zkServer.sh status 通过命令关闭 ./z...

weixin_44947339的博客 861

Raspberry Pi 4 ARM Trusted Firmware 技术解析

摘要: 本文详细介绍了在树莓派4(Raspberry Pi 4)上移植ARM可信固件(TF-A)的实现方案与安全考量。该移植专注于BL31功能,作为非安全世界(如Linux内核)的启动桥梁,支持加载EL2级别程序。文章分析了启动流程、内存映射设计,并对比了RPi3与RPi4的关键差异,指出当前版本缺乏硬件级安全内存保护的局限性。此外,提供了构建指南、配置说明及设备树自动修补的实现细节,强调通过config.txt简单配置即可启动64位内核。该方案充分利用树莓派原有GPU固件流程,兼顾兼容性与简易性。

Linux内核架构师 932

Zookeeper的Java API操作(一):创建、删除节点

Zookeeper是基于Java开发的分布式应用程序协调服务,使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作

zyd_994264926326的博客 2628

实战|2026美团&大众点评餐饮数据抓取:Playwright/Selenium反爬全攻略

核心结论:2026年美团&大众点评的反爬核心是“多维度风控”,需组合使用“住宅IP+设备指纹伪装+真人行为模拟+动态验证处理”,Playwright是最优工具,Selenium仅作为补充。效率优化:单机爬取速度建议控制在“每小时500-800条”,避免高频请求触发风控;分布式爬取需确保每个节点使用独立住宅IP,且行为轨迹不一致。扩展方向集成WASM解密工具,破解2026年美团的Token加密;用AI识别动态点选验证,提升验证通过率;对接大数据平台,对抓取的餐饮数据进行可视化分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2466

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

zookeeper的简单例子带你认识zk的API

下面先写个简单的例子,把一个字符串写入到zookeeper当中。 第一步,先引入pom依赖如下: &lt;dependency&gt; &lt;groupId&gt;org.apache.zookeeper&lt;/groupId&gt; &lt;artifactId&gt;zookeeper&lt;/artifactId&gt; ...

zhaolimin6666的专栏 284

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

zookeeper java开发_使用ZooKeeper Java API编程

Tips本章的代码在Linux操作系统下进行测试,运行ZooKeeper服务器实例的版本为3.4.6。开发应用程序的ZooKeeper Java绑定主要由两个Java包组成:org.apache.zookeeperorg.apache.zookeeper.dataorg.apache.zookeeper包由ZooKeeper监视的接口定义和ZooKeeper的各种回调处理程序组成。 它定义了Zoo...

weixin_35897916的博客 565

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Zookeeper_原生API操作(一)

讲了zookeeper的简单的介绍,以及环境搭建,还有zkClient的使用,基本上很简单,作为HelloWorld,今天继续往下走, 既然已经把简介和环境搭建完了,然后一会来说说配置,配置也没有什么说太多的,那我这里有一个配置的文档,发成PDF 的形式发给你了,就是有一个zookeeper的配置文件,配置文件基本上也就这几个,首先有一个tickTime,就是客户端和 服务器端维持心跳的一...

Leon_Jinhai_Sun的博客 419

【ZooKeeper】Curator 简单介绍以及连接zookeeper 重连策略的简单使用

zookeeper的原生API的不足之处: 超时重连,需要手动操作 watcher注册一次后会失效 不支持递归创建节点 Curator封装了很多,更加简单易用 Curator是一个比较完善的ZooKeeper客户端框架,通过封装的一套高级API简化了ZooKeeper的操作。Curator框架主要解决了三类问题: 封装ZooKeeper Client与ZooKeeper Server之间的连接处理(提供连接重试机制等)。 提供了一套Fluent风格的API,并且在Java客户端原生API的基础上进行了增

小灰狼与大白兔的博客 8879

ZooKeeper中API的简单使用

Zookeeper的API 1,输出子节点 首先我们从客户端命令行中看到有以下子节点: 则使用API操作: package zyl; import java.io.IOException; import java.util.List; import org.apache.zookeeper.KeeperException; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.a

u014120464的博客 253

zookeeper之简单API使用

一、简单客户端API package com.spring.test; import org.apache.zookeeper.*; import org.apache.zookeeper.data.Stat; import org.junit.Before; import org.junit.Test; import java.io.IOException; import java.util.List; public class Zkclient { private String serve

weixin_39102174的博客 244

ZooKeeper学习(三)ZooKeeper API操作

这里写目录标题API准备工作创建maven项目配置pom文件创建配置文件API操作测试zookeeper能否连接 API准备工作 创建maven项目 点击新建项目 随便写就行 配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-insta

秘密的博客 3881

ZooKeeper的简单使用

1解压 tar -zxvf zookeeper-3.4.10.tar.gz 2 修改配置文件 进入解压后的目录中,进入conf目录,打开zoo_sample.cfg。需要修改的是里面的datadir,zk节点上的数据最终就是存到这个目录中的。我们可以自定义这个目录。 如:将其修改成:(在解压后的目录中新建一个data目录) dataDir=/home/ubuntu/tool/zookeeper-3.4.10/data 3 zk也是cs模型 在zoo_sample.cfg中可以看到,他默认工作在2181端

luseysd的博客 3913

Zookeeper C API 指南一(准备工作)

发现几篇写的比较好的博客,转载来看看 目录 Zookeeper C API 指南一(准备工作) Zookeeper C API 指南二(监视(Wathes), 基本常量和结构体介绍) Zookeeper C API 指南三(回调函数) Zookeeper C API 指南四(C API 概览) Zookeeper C API 指南五(同步 API 介绍) Zookeeper C API 指南六(异步 API 介绍) Zookeeper C API 指南七(Zookeeper 辅助 API 介

alpha_love的博客 241

Zookeeper C API 官方示例程序

这个程序不可执行,但是可以从中学到利用C API编程时的一些启示。 #include "zookeeper.h" #include "proto.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #ifndef WIN32 #include <sys/time.h> #i...

qq_40123329的博客 658

Zookeeper简单api使用

/** * Hello world! * watcher,用于监测值得变化等等 * callback,getdata 非阻塞回调 传说中的reative模式编程。使用异步回调,减少计算机阻塞空转 */ public class App { public static void main( String[] args ) throws Exception { ...

Raymond的博客 253
上一篇: Android下Tinyalsa的编译和使用方法
下一篇: zookeeper的API简单编程二---服务器上下线的实时通知处理
葫芦娃二娃
博客等级 码龄15年 1850粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值