Java客户端连接 Zookeeper-学习记录(三)

【人工智能】你知道什么是DeepSeek吗?你有去了解过DeepSeek吗?新手要入门DeepSeek的必经之路——初识DeepSeek 【人工智能】初识DeepSeek 详细介绍DeepSeek以及DeepSeek-R1 阅读详情

引进 maven 依赖

 

<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
    <groupId>org.apache.zookeeper</groupId>
    <artifactId>zookeeper</artifactId>
    <version>3.4.14</version>
</dependency>

 

 

链接测试代码:

 

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import java.util.concurrent.CountDownLatch;
public class ZookeeperClientDemo {
    private static final String CONNECTION_STRING = "127.0.0.1:2181";
    private static final int SESSION_TIMEOUT = 5000;
    private static CountDownLatch latch = new CountDownLatch(1);
    public static void main(String[] args) throws Exception {
        //创建Zookeeper链接
        ZooKeeper zooKeeper = new ZooKeeper(CONNECTION_STRING, SESSION_TIMEOUT, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                if(watchedEvent.getState() == Event.KeeperState.SyncConnected){
                    latch.countDown();
                }
            }
        });
        latch.await();
        //打印Zookeeper 客户端对象
        System.out.println("=======" zooKeeper);
        
    }
}

 

   //以同步的方式列出根节点下的所有子节点
        List<String> children =  zooKeeper.getChildren("/",null);
        children.forEach((string) -> {
            System.out.println(string);
        });

 

 

  //以异步方式列出根节点下的所有子节点
        zooKeeper.getChildren("/", null, new AsyncCallback.ChildrenCallback() {
            @Override
            public void processResult(int i, String s, Object o, List<String> children) {
                children.forEach((node) -> {
                    System.out.println("异步方式:" node);
                });
            }
        },null);
        //确保异步回调方法被执行
        Thread.sleep(Long.MAX_VALUE);

 

 

    //同步方式判断节点是否存在    
    Stat stat = zooKeeper.exists("/phpfzh",null);
    if(stat != null){
        System.out.println("节点存在");
    }else{
        System.out.println("节点不存在");
    }

 

 

 //异步方式判断节点是否存在
zooKeeper.exists("/phpfzh", null, new AsyncCallback.StatCallback() {
    @Override
    public void processResult(int i, String s, Object o, Stat stat) {
        if(stat != null){
            System.out.println("节点存在");
        }else {
            System.out.println("节点不存在");
        }
    }
},null);

 

//同步方式创建持久节点,无ACL 权限 ,数据为phpnodehi
 String nodeName = zooKeeper.create("/phpnode","phpnodehi".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
 System.out.println(nodeName);

 

//异步方式创建持久节点,无ACL 权限 ,数据为phpnodehi
 zooKeeper.create("/phpnode2","phpnodehi".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT,new AsyncCallback.StringCallback(){
     @Override
     public void processResult(int i, String s, Object o, String s1) {
         System.out.println(s1);
     }
 },null);

 

 

//同步方式获取节点数据
byte[] data = zooKeeper.getData("/phpnode",null,null);
System.out.println(new String(data));

 

 
 //异步方式获取节点数据
zooKeeper.getData("/phpnode2", null, new AsyncCallback.DataCallback() {
    @Override
    public void processResult(int i, String s, Object o, byte[] bytes, Stat stat) {
        System.out.println(new String(bytes));
    }
},null);
Thread.sleep(Long.MAX_VALUE);

 

 

 
//同步方式更新节点信息  更新节点信息需要指定版本号,如果更新最新版的节点数据,指定为-1 即可
Stat stat = zooKeeper.setData("/phpnode","update data".getBytes(),-1);
if(stat != null){
    System.out.println("更新成功");
}else {
    System.out.println("更新失败");
}

 

 
//异步方式更新节点信息  更新节点信息需要指定版本号,如果更新最新版的节点数据,指定为-1 即可
zooKeeper.setData("/phpnode", "update data".getBytes(), -1, new AsyncCallback.StatCallback() {
    @Override
    public void processResult(int i, String s, Object o, Stat stat) {
        if(stat != null){
            System.out.println("节点更新成功");
        }else {
            System.out.println("节点更新失败");
        }
    }
},null);
Thread.sleep(Long.MAX_VALUE);

 

 

 //同步删除节点信息  该方法没有返回值,程序没有异常则说明删除成功
zooKeeper.delete("/phpnode",-1);

 

//异步删除节点信息
zooKeeper.delete("/phpnode2", -1, new AsyncCallback.VoidCallback() {
    @Override
    public void processResult(int i, String s, Object o) {
        System.out.println(i == 0);
    }
},null);
Thread.sleep(Long.MAX_VALUE);

 

 

常用API 

 

//以同步方式列出子节点

List<String> getChildren(String path,Watcher watcher)

 

//以异步方式列出子节点  watcher 监视器,cb 回调方法,ctx 上下文对象

void getChildren(String path,Watcher watcher,ChildrenCallback cb,Object ctx)

 

//以异步方式列出子节点

void getChildren(String path,Watcher watcher,Children2Callback cb,Object ctx)

 

//以同步方式判断节点是否已存在

Stat exists(String path,Watcher watcher)

 

//以异步步方式判断节点是否已存在

void exists(String path,Watcher watcher,StatCallback cb,Object ctx)

 

//以同步方式创建节点 ,path 节点路径,data 节点数据,acl 权限

String create(String path,byte[] data,List<ACL> acl,CreateMode createMode)

 

//以异步方式创建节点 ,path 节点路径,data 节点数据,acl 权限 ,cb 回调方法,ctx 上下文对象

void create(String path,byte[] data,List<ACL> acl,CreateMode createMode,StringCallback cb,Object ctx)

 

//以同步方式获取节点数据

byte[] getData(String path,Watcher watcher,Stat stat)

 

//异步方式获取节点数据

void getData(String path,Watcher watcher,DataCallback cb,Object ctx)

 

//同步方式更新节点

Stat setData(String path,byte[] data,int version)

 

//异步方式更新节点

void setData(String path,byte[] data,int version,StatCallback cb,Object ctx)

 

//同步方式删除节点

void delete(String path,int version)

 

//异步方式删除节点

void delete(String path,int version,VoidCallback,cb,Object ctx)

 

 

电磁炉线圈加热仿真全流程:用Ansys Maxwell分析涡流效应与热损耗 本文详细介绍了使用Ansys Maxwell进行电磁炉线圈加热仿真的全流程。通过构建2D轴对称涡流场模型,深入分析了高频下的涡流效应、趋肤效应与热损耗分布,为优化线圈设计、提升加热效率与均匀性提供了量化依据和实用指南。 阅读详情

相关推荐

AI+医疗:多模态模型让肺结节诊断准确率突破95%+的实战方案

多模态融合是必由之路:单一影像模型难以突破95%准确率,必须整合临床、生物标志物等多维数据跨模态注意力机制是核心:简单拼接效果差,注意力机制能自动学习各模态权重,提升融合效果临床适配比技术先进更重要:模型输出必须符合医生诊断习惯,提供可解释的决策依据持续学习是长期成功的关键:医疗数据分布不断变化,模型必须具备自适应能力多学科协作是保障:放射科、胸外科、病理科、AI工程师共同参与模型设计与优化。

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

Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

Zookeeper客户端ZkClient、Curator的使用,史上最详细的教程来啦~

zhaoshuangjian 4535

Windows环境下DataEase一站式安装指南(含WSL2+Docker配置)

本文详细介绍了在Windows环境下通过WSL2和Docker快速部署DataEase的完整教程。从WSL2配置、Docker环境搭建到DataEase离线安装,逐步指导用户完成一站式部署,特别适合需要快速搭建数据分析平台的开发者。教程包含常见问题解决方案和性能优化技巧,帮助用户高效使用这款国产开源数据可视化工具。

weixin_42526166的博客 392

zookeeper快速入门四:在java客户端中操作zookeeper

先启动zookeeper服务端。 在maven引入zookeeper依赖。 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>zookeeper</artifactId> <version>3.3.1</version> </dependency> org.apache.zookeeper.Zookeeper是

马不腾的博客 567

地图可视化类型大全

地图可视化类型大全: 散点地图 网格地图 聚合地图 气泡地图 热力图 Choropleth地图/分级设色地图/分级区域地图/着色地图/分级统计地图(百度百科这样翻译)/等值域地图/分段设色地图 Cartogram地图/变形地图/示意地图 规则形状地图 /RecMap/Demers Cartogram/瓷砖网格地图/DorlingMap 流型图(Flow Map)\流线图\流向图\轨迹地图 复合地图

codeuniverse的博客 3532

Sony DPT RP1/CP1破解攻略

前言 自己有一台Sony DPT CP1和一台kindle,两个都已经用了很多年。直到最近发现微信读书上经常可以找到一些免费而且不错的书,所以就萌生了在两台机器上使用微信读书的想法。kindle比较容易实现,直接打开内置浏览器,进入微信读书网页版就行了,而Sony的电纸书则只能通过破解+安装微信读书的方式实现。大概弄了两三个小时吧,也遇到了一些问题,所以这里记录一下整个过程,希望能方便后来的使用者。 首先感谢HappyZ, osc_t5nbj8ds。前者是提供公开破解的方法的大神,后者则是解决了我遇到的问题

weixin_43467572的博客 1万+

【Zookeeper源码走读】第一章 客户端与服务器的连接过程

以上就是客户端与服务器大致的连接过程,下文开始走读心跳,超时等机制。

IT布道 1166

Neo4j:入门基础(二)之导入CSV文件

导入CSV文件的方式  主要的两种方式如下:   1、使用 Cypher 命令LOAD CSV,这种方式可以处理中小型数据(可达10 million条记录)   2、使用批量导入工具neo4j-admin ,用来直接导入大数据集 三、上述方式具体导入过程   1、Cypher 命令LOAD CSV 参数 1、USING PERIODIC COMMIT 300 使用批量提交,每满300条提交一次,防止内存溢出 2、WITH HEADERS 从文件中读取第一行作为参数名,...

Puzzle的博客 3万+

【Zookeeper客户端流程浅析】

Zookeeper客户端流程

d1451545368的博客 1070

bacnet 官方协议栈 bacnet-stack-0.8.2关于router例程BACnet MS/TP BACnet IP调试说明

bacnet 官方协议栈 bacnet-stack-0.8.2关于router例程mstp,bacnet ip调试说明

shufawangzhang的博客 2222

读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截

摘要 403 Forbidden 错误表明服务器理解请求但拒绝执行,通常与权限或访问控制有关。当错误信息显示 "blocked by UCON" 时,说明请求被 SAP 体系中的统一连接管控框架拦截。UCON 采用白名单机制限制外部调用,通过记录、评估、强制三阶段流程实施管控。常见触发场景包括 HTTP 服务与通信场景配置不一致、白名单未更新等。排查时应通过 DevTools 确认服务器响应,使用 curl 排除浏览器干扰,并比较不同环境的行为差异。解决方案通常涉及调整配置传输顺序或更新

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

zookeeper安装以及使用

1、zookeeper简介zookeeper(以下简称ZK)是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop、Hbase、Kafka、Jstorm等开源软件的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZK的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功......

燕少江湖 3万+

【32】OpenCV——图像含义关系?RGGB , BGGR , GRBG , GBRG呢?raw8,raw10,raw12,raw14呢? YUV422; RAW16呢?YCbYCr/RG_GB;

‌如前所述,定义原始数据的位深精度。‌* ‌一种压缩色彩编码方式,通过色度抽样(亮度Y全分辨率,色度U/V半分辨率)减少数据量,常用于视频传输。‌* ‌可能指每个像素分量占16位存储(如高位填充的RAW10/12/14),或未明确量化的高精度原始数据。‌ ‌分类‌核心定义‌关联性及典型应用传感器原始色彩排列(RGGB/BGGR等)决定RAW数据的色彩分布规则RAW位深每个分量的数据精度(8/10/12/14位)影响动态范围和存储空间‌YUV422。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 791

通过java连接zookeeper客户端进行操作

1、添加pom依赖 <!--添加zookeeper客户端依赖--> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> ...

Yang_Hui_Liang的博客 741

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Zookeeper学习记录及Java客户端连接示例

1. Zookeeper 1.1 简介 ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services. All of these kinds o...

Ep流苏的博客 570

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

记录一次Issue关于zookeeper客户端连接和单例模式

记录一次Issue关于zookeeper客户端连接和单例模式 一次代码中,我试图用enum的单例模式,在构造器中建立zookeeper的链接,发现这样行不通。把构造器改成普通的方法再调用,就可以正常的建立连接,百思不得其解 环境: windows10 jdk7 idea apache zookeeper 关键代码 package com.giligency.readOnlySwitch; ...

有意思 574

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

【ZooKeeper】 :原生Java客户端连接zookeeper服务实行操作(ACL,Session,Watcher,Znode)

zookeeper客户端: zk原生客户端 Apache curator 我这里采用原生客户端来连接zookeeper服务。 导入依赖 pom.xml文件添加如下依赖(我这里是zookeeper 3.7.0),我服务端也是3.7.0,最好保持一致。 <dependencies> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId&gt

小灰狼与大白兔的博客 7805

Zookeeper Java客户端连接慢、超时问题Ad-Hoc检查清单

首先确认你的设备到zookeeper的连通性是OK的,可通过命令echo srvr | nc HOST 2181,检查是否可以正常打印节点信息。Zookeeper Java客户端初始化打印日志记录环境信息,卡在InetAddress.getLocalHost().getCanonicalHostName()方法。记录臭名昭著的Zookeeper连接卡20s问题,快速定位解决Java客户端连接Zookeeper可能遇到的各种连接慢、超时问题。解决方法:本地配置hosts文件,添加下面条目。

weixin_55010563的博客 1274

zookeeper学习记录-07 Zookeeper Java 开源客户端

前言前面一篇使用Zookeeper提供的原生态Java API客户端进行操作,这里使用Zookeeper的开源客户端ZkClient和Curator进行操作.ZkClient准备工作–引入依赖在pom.xml中 加入依赖 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookee

jiuxiao199132的博客 404

java zk客户端连接_Zookeeper的核心概念以及java客户端使用

一、Zookeeper的核心概念分布式配置中心(存储):disconf(zk)、diamond(mysql+http)1)znodeZooKeeper操作和维护的是一个个数据节点,称为 znode,采用类似文件系统的层级树状结构进行管理。如果 znode节点包含数据则存储为字节数组(byte array)。创建 znode 时需要指定节点类型:znode 共有 4 种类型,分别为:持久(无序)、临...

weixin_39778150的博客 892

Zookeeper的Shell 客户端操作和zookeeper java api 代码

Zookeeper的Shell 客户端操作和zookeeper java api 代码Zookeeper的Shell 客户端操作ZooKeeper Java APIzookeeper选举机制 Zookeeper的Shell 客户端操作 运行 zkCli.sh –server ip:2181 命令 说明 参数 create [-s] [-e] path data acl 创建Znode -s 指定是顺序节 点 -e 指定是临时节 点 ls path [watch] 列出Path下所有子Znode get

Maynor的博客 3159

突破连接瓶颈:Apache ZooKeeper客户端连接数优化实战指南

在分布式系统运维中,你是否曾遭遇过"Too many connections"错误?当业务规模扩张导致客户端连接数激增时,ZooKeeper默认的连接限制可能成为系统瓶颈。本文将从配置优化、源码解析到性能测试,全方位带你解决连接数难题,确保分布式协调服务的高可用性。 ## 连接数限制的根源:默认配置解析 ZooKeeper的连接数控制始于配置文件中的关键参数。在默认配置模板[conf/zoo_...

gitblog_01024的博客 1039

从崩溃到稳定:Apache ZooKeeper客户端连接监控实战指南

在分布式系统运维中,ZooKeeper客户端连接异常常常导致服务雪崩。本文将通过官方工具与实战代码,带你掌握连接数统计与异常检测的核心方法,解决"明明资源充足却连接失败"的运维痛点。读完你将获得:3种连接监控工具对比、异常连接自动清理脚本、生产级监控指标配置方案。 ## 监控工具选型:从命令行到可视化平台 ZooKeeper生态提供了多层次的连接监控工具,从简单的命令行查询到完整的可视化监控系...

gitblog_00124的博客 1193

【报错记录】ZooKeeper报java.net.SocketException: Socket is not connected无法连接上

由于我在学习ZooKeeper的阶段中,ZooKeeper都部署在虚拟机里了,心想着我就不配hosts了吧,反正虚拟机早晚要删掉。然后用java连接ZooKeeper就报错了,报: ava.net.SocketException: Socket is not connected at sun.nio.ch.Net.translateToSocketException(Net.java:123) at sun.nio.ch.Net.translateException(Net.java:157) a

DCTANT的博客 5498

zookeeper连接报错问题记录java.io.IOException: Broken pipe

今天项目上发现一个问题,运行一段时间的web服务出现了zookeeper连接断开的问题,经定位是由于写某个节点时数据太大,大概1M多,而zk默认的节点大小为1M。所以导致了会话断开等一系列问题。而问题原因主要和一个JVM参数jute.maxbuffer有关 zk客户端使用的是org.IOItec.zkclient.ZkClient 错误1.客户端报错java.io.IOException: Packet len1830457 is out of range! 很明显,数据包太大了超过了限制 解决方案:调整J

qq_44898256的博客 5140

一起进阶学习JAVA:Zookeeper

一起进阶学习JAVA:Zookeeper 文章内容输出来源:拉勾教育Java高薪训练营

咩咩咩的博客 3591
上一篇: Zookeeper常用命令-学习记录(二)
下一篇: Nodejs客户端连接Zookeeper - 学习记录(四)
phpfzh
博客等级 码龄10年 22粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值