4.0 Zookeeper Java 客户端搭建

本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。

IntelliJ IDEA 相关介绍:

简单使用示例:

实例

  • Intellij IDEA 使用教程
  • Maven IntelliJ
  • <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope>
    </dependency>
    <dependency><groupId>org.apache.zookeeper</groupId><artifactId>zookeeper</artifactId><version>3.4.8</version>
    </dependency>
    <dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>4.0.0</version>
    </dependency>
    <dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>4.0.0</version>
    </dependency>

    maven 工程目录结构:

    一、客户端的 zookeeper 原生 API

    使用 zookeeper 原生 API,连接上一教程搭建的三台服务组成的集群,因为连接需要时间,用 countDownLatch 阻塞,等待连接成功,控制台输出连接状态!

    实例

  • ...public static void main(String[] args) {try {final CountDownLatch countDownLatch=new CountDownLatch(1);ZooKeeper zooKeeper=new ZooKeeper("192.168.3.33:2181," +"192.168.3.35:2181,192.168.3.37:2181",4000, new Watcher() {@Overridepublic void process(WatchedEvent event) {if(Event.KeeperState.SyncConnected==event.getState()){//如果收到了服务端的响应事件,连接成功countDownLatch.countDown();}}});countDownLatch.await();//CONNECTEDSystem.out.println(zooKeeper.getState());}
    }
    ...

    控制台输出 connected 显示连接成功!

    简单示例添加节点 API:

  • zooKeeper.create("/runoob","0".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);

    提示:更多命令功能使用请参考本教程后面章节。

    同时在服务端终端执行命令,显示设置成功。

    二、客户端的curator连接

    Curator 是 Netflix 公司开源的一套 zookeeper 客户端框架,解决了很多 Zookeeper 客户端非常底层的细节开发工作,包括连接重连、反复注册 Watcher 和 NodeExistsException 异常等。

    Curator 包含了几个包:

  • curator-framework:对 zookeeper 的底层 api 的一些封装。
  • curator-client:提供一些客户端的操作,例如重试策略等。
  • curator-recipes:封装了一些高级特性,如:Cache 事件监听、选举、分布式锁、分布式计数器、分布式 Barrier 等。
  • 简单使用示例:
  • public class CuratorDemo {public static void main(String[] args) throws Exception {CuratorFramework curatorFramework=CuratorFrameworkFactory.builder().connectString("192.168.3.33:2181," +"192.168.3.35:2181,192.168.3.37:2181").sessionTimeoutMs(4000).retryPolicy(newExponentialBackoffRetry(1000,3)).namespace("").build();curatorFramework.start();Stat stat=new Stat();//查询节点数据byte[] bytes =        curatorFramework.getData().storingStatIn(stat).forPath("/runoob");System.out.println(new String(bytes));curatorFramework.close();}
    }

    上一步设置了 /runoob 节点值,所以控制台输出。

    curator 相关参考链接: Apache Curator。

  • 希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/455513.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

axios封装取消请求的方式

问题:项目中涉及tab切换页,tab1和tab2列表数据字段相同,所以一般使用el-tabs组件;el-tabs中的每一项el-tab 是通过v-for遍历产生的,所有的每一项el-tab中的table表格数据使用的是一个tableData存储的;此时会有问题;我们点击tab1时发送请求获取数据保存在tableData中,点击tab2时…

leecode172 | 阶乘后的零 | 傻瓜GPT

题意 给定一个整数 n &#xff0c;返回 n! 结果中尾随零的数量。提示 n! n * (n - 1) * (n - 2) * ... * 3 * 2 * 1//题解 class Solution { public:int trailingZeroes(int n) { // ...*(1*5)*...*(x*5)*...*(1*5*5)*...*(x*5*5)*...*n 然后倒过来 //...∗(1∗5)∗...∗…

电脑文件msvcr120.dll丢失怎样修复?一键修复msvcr120.dll的方法

近期发现众多用户向小编询问关于“msvcr120.dll文件应该放置在何处”的问题&#xff0c;这可能暗示着该文件丢失的情况变得普遍。面对这种情况&#xff0c;小编认为有必要向大家提供一个详尽的指导&#xff0c;帮助解决 msvcr120.dll 文件丢失的难题。接下来&#xff0c;让我们…

Vivado-IP核

Vivado-IP核 主程序 timescale 1ns / 1ps ////module ip_clk_wiz(input sys_clk,input sys_rst_n,output clk_out1,output clk_out2,output clk_out3,output clk_out4,output locked);clk_wiz_0 instance_name(// Clock out ports.clk_out1(clk_out1), // output clk_out…

ElasticSearch-SpringBoot整合ElasticSearch

六、SpringBoot整合ElasticSearch 1、浏览官方文档 1、查找跟ES客户端相关的文档 使用Java REST Client 选择Java Hight Level REST Client 2、创建项目的准备 1.找到原生的依赖 2.找到对象 3.分析这个类里面的方法 3、正式创建项目 1.创建工程 2.导入依赖 注意依赖版本…

华为视频监控接入到视频监控平台 (华为网路监控摄像机IPC和华为视频节点设备VCN)

目 录 一、设备介绍 1.1 华为VCN介绍 1.2 AS-V1000视频监控平台介绍 1.3 平台服务器配置说明 二、安装、配置HW_IVS软件 2.1下载安装HW_IVS软件 2.2登录HW_IVS 2.3共享到外域 三、配置华为外域参数 3.1 PCG模块设置 3.2通信协议GBT28181配置 3.3传…

OpenCV 图像处理六(傅里叶变换、模板匹配与霍夫变换)

文章目录 一、傅里叶变换1.1 NumPy实现和逆实现1.1.1 NumPy实现傅里叶变换Demo 1.1.2 NumPy实现逆傅里叶变换Demo 1.2 OpenCV实现和逆实现1.2.1 OpenCV实现傅里叶变换Demo 1.2.2 OpenCV实现逆傅里叶变换Demo 1.3 频域滤波1.3.1低频、高频1.3.2 高通滤波器构造高通滤波器Demo 1.…

[嵌入式AI从0开始到入土]13_orangepi aipro开箱测评

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

【算法设计与分析】最小覆盖字串

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回…

支持534种语言,开源大语言模型MaLA-500

无论是开源的LLaMA 2还是闭源的GPT系列模型&#xff0c;功能虽然很强大&#xff0c;但对语言的支持和扩展比较差&#xff0c;例如&#xff0c;二者都是以英语为主的大模型。 为了提升大模型语言的多元化&#xff0c;慕尼黑大学、赫尔辛基大学等研究人员联合开源了&#xff0c;…

python创建pdf文件

目录 一&#xff1a;使用reportlab库 二&#xff1a;使用使pdf库 在Python中生成PDF文件可以使用多种库&#xff0c;其中最常用的是reportlab和fpdf。以下是使用这两个库生成PDF文件的示例代码&#xff1a; 一&#xff1a;使用reportlab库 1&#xff1a;写入文字信息 from r…

【深度学习理论】持续更新

文章目录 1.统计学习理论 1.统计学习理论 统计学习理论&#xff0c;一款适合零成本搞深度学习的大冤种的方向 从人类学习到机器学习的对比&#xff08;学习的过程分为归纳和演绎 &#xff09;&#xff0c;引出泛化和过拟合的概念。 如何表示归纳的函数规律呢&#xff1f;以监督…