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。 阅读详情

相关推荐

计算蛋白质结构中氨基酸之间的方向和方位

方向 (Direction):通过相邻氨基酸的 CαCα​ 原子坐标差值,得到方向向量,描述两个氨基酸之间的几何方向。方位 (Orientation):可以通过二面角(如 Psi)来表示相邻氨基酸之间的旋转关系,或者通过局部坐标系(基于 NN、CαCα​、CC 原子)描述残基的空间取向。这些计算是研究蛋白质结构动力学、折叠过程、以及相互作用的基础,尤其是在使用机器学习和深度学习模型进行蛋白质结构预测时,这些几何信息有助于更好地捕捉残基之间的空间关系。

qq_27390023的博客 1681

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

WebRTC TURN协议初识及turnserver实践

但是TURN协议对服务器有很高的依赖,服务器在带宽和集群上有很大的压力,所以TURN协议通常是当作ICE协议中的一部分来使用。ChannelData message不使用STUN头部,而使用一个4字节的头部,包含了一个称之为信道号的值(channel number),每一个使用中的信道号都与一个特定的peer绑定,即作为对等端地址的一个记号。该relay地址是个公网地址,可以看作是客户端A在公网上的一个代理,任何想要联系A的客户端,只要将数据发送到A的relay地址就可以了。

yinshipin007的博客 566

Zookeeper集群操作

Zookeeper集群操作

m0_58524181的博客 588

SAP FICO - 外币交易实战:汇率类型配置与货币换算率管理

月底关账前的外币评估就像财务人的"期末考",OB59配置就是你的备考方案。最低值原则(Lowest value principle)最保守。它会比较原始汇率与评估日汇率,取不利方向确认损失。适合风险厌恶型企业,我在制造业客户中应用最多。重估法(Revalue only)更反映市场现状。无论盈亏都按最新汇率调整,适合交易性金融资产处理。有个基金公司客户就靠这个方法及时反映了外汇波动收益。最小差异金额(Minimum difference)是防骚扰设置。

weixin_42524708的博客 358

Android 的端智能学习路径

基础层:先补齐 Android 进阶(JNI / 性能优化)和 AI 基础概念,无需深入算法开发;核心层:掌握 TFLite 的模型加载、推理、量化,能完成基础端侧推理;落地层:聚焦实战场景(图像 / OCR / 语音),解决工程化问题(模型管理、异常处理);优化层:通过模型量化、硬件加速、工程优化,提升推理性能和用户体验。

hqiangtai的博客 344

zookeeper集群+kafka对接ELK集群

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

qq_45873113的博客 1017

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择?文章不仅详细阐述了这两种技术的工作原理,还深入分析了它们在效率、准确性和实施成本等方面的差异。文章特别提到了在执行重复性任务时使用 Context Caching 优化长上下文的优势,然而,缓存策略的效果很大程度上取决于提示词的可预测性。

2401_85782938的博客 1256

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

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

半旧518的博客 1711

TK抓包协议分析:So层逆向

第三个参数是一个回调函数,这里他的返回值1表示成功,0表示失败,那我们手动把他Hook为0,让他不支持quic协议,实现降级。等,我们是为了解决抓包问题,那很有可能是在net目录下(network),那来搜索一下。开了抓包以后APP直接是网络无连接了,并且抓到的请求也是不正常的,下面我们就开始定位。看了半天感觉也没啥有用的东西,那下面我们整理一下已经有信息,来猜测一下,后续怎么进行。那可以猜测,我们真正需要Hook的那个函数也有可能是这样加载的,可以字符串搜索一下。

2503_90751938的博客 3420

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

qq_40073899的博客 561

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

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

半旧518的博客 3343

Qt应用软件【协议篇】自定义协议处理串口半包贴包

Qt串口数据,半包,贴包,丢包数据处理

小鱼酱的博客 1211

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

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

2401_84166327的博客 383

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

zookeeper入门到精通

zookeeper,java

User_bie的博客 2594

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Zookeeper入门到精通

Zookeeper入门到精通

weixin_56018532的博客 634

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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、付费专栏及课程。

余额充值