zookeeper入门到精通07——zookeeper客户端API节点操作与原理_zookeeper api的访问方式原理(1)

七、Zookeeper注册中心 使用Zookeeper作为注册中心,并搭配使用Zookeeper可视化监控工具 阅读详情

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

    List<String> children = client.getChildren("/", true);
    for (String child: children) {
        System.out.println(child);
    }
}

}


上面并不能实时监听节点的变化,即使我们在使用`getChildren`是开启了子节点的监听。这是因为两个原因:第一,程序执行完一次监听后就退出了。第二,监听器注册一次只能够监听一次(参考:[Zookeeper入门到精通05——Zookeeper客户端命令行操作](https://bbs.youkuaiyun.com/topics/618545628),小节:监听器原理)。如何才能够实时监听子节点,并且一有变化就输出呢?很简单,把上面的代码稍微修改下即可。



public class ZKClient {
ZooKeeper client;

@Before
public void init() throws IOException {
    // 注意逗号后不要加空格,严格按照格式,在下面写自己对应得zookeeper服务集群得ip
    String connectString="192.168.106.43:2182,192.168.106.44:2182,192.168.106.45:2182";

// String connectString=“192.168.106.43,192.168.106.44,192.168.106.45”;
int sessionTimeout = 20000;
client = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {
List children = null;
try {
// 参数true表示开启子节点的监听
children = client.getChildren(“/”, true);
} catch (KeeperException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
for (String child: children) {
System.out.println(child);
}
}
});
}
}

@Test
public void grtChild() throws InterruptedException, KeeperException {
List children = client.getChildren(“/”, true);
for (String child: children) {
System.out.println(child);
}
// 延时阻塞,防止程序退出
Thread.sleep(Long.MAX_VALUE);
}


#### 二、判断节点是否存在



public class ZKClient {
ZooKeeper client;

@Before
public void init() throws IOException {
    // 注意逗号后不要加空格,严格按照格式,在下面写自己对应得zookeeper服务集群得ip
    String connectString="192.168.106.43:2182,192.168.106.44:2182,192.168.106.45:2182";

// String connectString=“192.168.106.43,192.168.106.44,192.168.106.45”;
int sessionTimeout = 20000;
client = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent watchedEvent) {}
});
}

@Test
public void exist() throws InterruptedException, KeeperException {
Stat exists = client.exists(“/sanguo1”, false);
System.out.println(exists==null?“not exist” : “exist”);
}
}


#### 三、zookeeper的写数据原理


不管是采用命令行还是api操作zookeeper集群,其实都是对于zookeeper进行写数据操作,那它的底层原理是什么呢?


(1)直接向leader发写请求  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3a6269229f434a47a579d422bb4ea702.png)  
 如上图。假设zookeeper集群中有三台zookeeper服务器,首先client会给leader写数据,然后leader给其中一个follower写数据,之后follower会回复leader。此时,集群已经有半数服务器更新了数据,会由leader向client回复。之后leader继续与其它的follow进行数据同步与回复确认。


![img](https://img-blog.csdnimg.cn/img_convert/3fd224c62b14f78c1f02a9fe8612603a.png)
![img](https://img-blog.csdnimg.cn/img_convert/fa4484e4dee8df27ed708b65a6594784.png)
![img](https://img-blog.csdnimg.cn/img_convert/5508fce2d0b398b305f0fc2dccb3cda8.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.youkuaiyun.com/topics/618545628)**

,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.youkuaiyun.com/topics/618545628)**

zookeeper入门到精通07——zookeeper客户端API节点操作与原理_zookeeper api的访问方式原理(2) client给follower发送写请求后,follower会将请求转发给leader,leader进行写操作,并且选择一台follower完成写操作,follower响应请求并回复。当超过半数的服务器完成写操作后,会由leader回复给最开始响应client的follower,并由它对client进行回复。假设zookeeper集群中有三台zookeeper服务器,首先client会给leader写数据,然后leader给其中一个follower写数据,之后follower会回复leader。 阅读详情

相关推荐

HFSS实战(二)——精准仿真高速PCB差分线的信号完整性

本文深入探讨了使用HFSS进行高速PCB差分线信号完整性仿真的关键技术与实战经验。从设计文件导入、模型裁剪到差分端口设置,详细解析了精准仿真的全流程,特别强调了材料特性和3D电磁场仿真在解决微带线损耗等问题中的重要性。文章还提供了常见问题排查指南和效率优化技巧,帮助工程师提升高速PCB设计的仿真精度与效率。

weixin_38170829的博客 574

zookeeper的访问

1 zookeeper的安装及配置 参考我的文章第5.1小结 2 命令行方式访问 help用法帮助 2.1 创建节点 语法格式 create [-s] [-e] path data acl 2.1.1 创建临时节点 create -e 路径 数据 create -e /my-ephemeral-node my-ephemeral-testdata 第二个客户端也能看到刚刚创建的临时节点 测试-e参数的临时性 关闭第一个客户端链接 关闭后从第二个客户端看不到临时节点啦 2.1.2 创建永久节点 c

jinxilongjxl的博客 2729

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 72

Zookeeper集群操作

Zookeeper集群操作

m0_58524181的博客 588

解决Anaconda环境下catkin_make编译报错:Python路径冲突与empy模块缺失

本文详细分析了在Anaconda环境下使用catkin_make编译时出现的Python路径冲突与empy模块缺失问题,提供了快速解决方案和永久性环境配置方法。通过显式指定Python解释器路径或调整Anaconda配置,有效解决编译报错问题,适用于ROS开发与科学计算并行的场景。

weixin_28829629的博客 353

STM32 HardFault调试:寄存器分析与堆栈回溯实战

HardFault是Cortex-M内核中最关键的不可屏蔽异常,本质是处理器对非法指令执行、内存访问越界、堆栈溢出等底层硬件错误的强制响应。其原理根植于ARMv7-M异常模型,通过自动压栈保存xPSR/PC/LR等核心寄存器实现上下文捕获。技术价值在于为嵌入式系统提供确定性故障归因能力,支撑高可靠工业设备开发。典型应用场景涵盖FreeRTOS任务崩溃定位、DMA中断越界诊断及MPU保护机制验证。本文聚焦STM32平台,深入解析LR寄存器低4位判别堆栈模式、基于MSP/PSP的PC地址提取方法,并结合Keil

weixin_30951515的博客 143

zookeeper集群+kafka对接ELK集群

目录一、zookeeper概述1、工作机制2、zookeeper的特点3、Zookeeper选举机制二、部署Zookeeper1、安装JDK2、安装zookeeper 一、zookeeper概述 zookeepei是一个开源的分布式的,伪分布式框架提供协调服务的Apache项目 1、工作机制 zookeeper:是一个基于观察者模式设计的分布式服务管理框架,她负责存储管理大家的数据,然年接受观察者的注册,一旦这些数据的状态发生变化,zookeeper就将负责通知已经在zookeeper上注册的那些观察

qq_45873113的博客 1017

〔重庆理工大学〕计算机组成原理课设报告--16位单周期CPU设计

本课程设计的实验平台为Altera Quartus II 软件和Altera Cyclone V Starter 工具箱。(1)Cyclone V是Altera FPGAs家族的一类,它面向低功耗应用。Cyclone V GX 5CGXFC5C6F27C7N 芯片有不同的转换器,按钮,LED灯,七段显示器,HDMI接口,SD卡读卡器以及其他链接等。Cyclone V GX 5CGXFC5C6F27C7N是Starter工具箱的重要组件。(2)测试台包含在测设备(DUT)和用于仿真的模拟输入。

Pretty Boy Fox的博客 1066

zookeeper入门到精通07——zookeeper客户端API节点操作与原理

使用java的api方式实现zookeeper的节点监听、操作与写数据的原理

半旧518的博客 1711

检索增强生成(RAG)、微调(Fine-tuning)与知识蒸馏(Knowledge Distillation):核心差异与技术选型指南

在自然语言处理(NLP)领域,大型预训练语言模型(如GPT、BERT系列)的崛起彻底改变了技术生态。面对实际业务场景中模型效果优化与资源效率平衡的永恒命题,开发者主要依赖三大技术路径:检索增强生成(Retrieval-Augmented Generation, RAG)、模型微调(Fine-tuning)和知识蒸馏(Knowledge Distillation)。本文将通过技术原理拆解、典型应用场景对比和实战选型策略三个维度,深入解析这三种技术的本质差异。

fudaihb的博客 1827

#systemverilog# 之 event region 和 timeslot 仿真调度(三)Verdi 辅助查看

通过今天的学习,我们知道:event region 是event sequence 的全集。我们打开了 event region feature 也就开启了event sequence 的功能。

那么菜的博客 1365

zookeeper入门到精通06——zookeeper客户端API创建节点

zookeeper是常用的微服务技术栈,本文将通过一个实例带大家使用客户端api远程创建zookeeper节点

半旧518的博客 3343

Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配

目前阻抗匹配多直接有制版厂进行,PCB设计师在设计阶段可不关注阻抗设计,在加工阶段只需标注需要控制的阻抗线,制板厂即可按照要求对阻抗线进行调整和控制。但是对于设计师来讲掌握阻抗线的设计方法也是非常必要的。本文介绍Altium Designer(AD24/25)如何在PCB设计阶段做阻抗匹配。

fydar的博客 893

zookeeper入门到精通07——zookeeper客户端API节点操作与原理_zookeeper api的访问方式原理

🍉 作者简介:半旧518,长跑型选手,立志坚持写10年博客,专注于java后端☕专栏简介:深入、全面、系统的介绍微服务常用技术栈zookeeper知识。

2401_84166327的博客 383

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

zookeeper入门到精通

zookeeper,java

User_bie的博客 2594

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Zookeeper入门到精通

Zookeeper入门到精通

weixin_56018532的博客 634

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

zookeeper入门到精通08——服务器节点动态上下线案例实战

需求描述:某分布式系统中,有多台主节点服务器,可以动态的上下线,要求服务器可以实时的监听到主节点服务器的上下线。

半旧518的博客 1048

【ZooKeeper系列】2.用Java实现ZooKeeper API的调用

zookeeper api API客户端异常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for /zk_demo 。完整的报错信息如下: 09:33:52.139 [main-SendThread(106.12.111.172:2181)] DEBUG...

一起理解技术趋势,沉淀长期价值 1760

Zookeeper——Watch机制原理

摘要 ZooKeeper 又一关键技术——Watch 监控机制,并用它实现一个发布订阅功能。 在日常生活中也有很多订阅发布的场景。比如我们喜欢观看某一个剧集,视频网站会有一个订阅按钮,用户可以订阅自己喜欢的电视剧,当有新的剧集发布时,网站会通知该用户第一时间观看。或者我们在网站上看到一件心仪的商品,但是当前没有库存,网站会提供到货通知的功能,我们开启这个商品的到货通知功能后,商品补货的时候会通知我们,之后就可以进行购买了。ZooKeeper 中的 Watch 机制很像这些日常的应用场景,其中的客户端就是

庄小焱 3803

Zookeeper从入门到精通系列之--1.Zookeeper的API操作

  一 IDEA环境搭建 1.1 创建一个maven项目 在pom.xml添加如下依赖 &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;artifactId&gt;junit&lt;/artifactId...

一个月只有三十天 996

分布式与微服务系列 - Zookeeper(上篇:入门到精通)

本内容仅用于个人学习笔记,如有侵扰,联系删除视频教程:【尚硅谷】大数据技术之Zookeeper 3.5.7版本教程是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个。每一个默认能够存储1MB的数据,每个都可以通过其路径唯一标识。 提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下 线、软负载均衡等。统一命名服务 统一配置管理 统一集群管理 服务器动态上下线 软负载均衡 2)、解压JD

知行 1550
上一篇: ZooKeeper【基础 04】控制权限ACL(原生的 Shell 命令)_zookeeper添加权限如何查看
下一篇: zookeeper入门到精通07——zookeeper客户端API节点操作与原理_zookeeper api的访问方式原理
普通网友
博客等级 码龄3年 2978粉丝 294原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值