zookeeper的javaAPI使用
前提: 1.虚拟机之间互通。 2.windows环境的host域名解析配置完成 C:\WINDOWS\system32\drivers\etc\host 3.java引入以下maven jar包
<dependencies><dependency><groupId>org.apache.curator</groupId><artifactId>curator-framework</artifactId><version>2.12.0</version></dependency><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>2.12.0</version></dependency><dependency><groupId>com.google.collections</groupId><artifactId>google-collections</artifactId><version>1.0</version></dependency><dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>RELEASE</version><!--test:只在测试时使用,不打包provided:仅在开发环境使用,不打包compile:默认,开发环境要,打包也要--><scope>test</scope></dependency> </dependencies> <build><plugins><!-- java编译插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin></plugins> </build>
---------------------------------------以下为具体代码------------------------- package cn.itcast_zk.demo01;import org.apache.curator.RetryPolicy; import org.apache.curator.RetrySleeper; import org.apache.curator.framework.CuratorFramework; import org.apache.curator.framework.CuratorFrameworkFactory; import org.apache.curator.framework.recipes.cache.ChildData; import org.apache.curator.framework.recipes.cache.TreeCache; import org.apache.curator.framework.recipes.cache.TreeCacheEvent; import org.apache.curator.framework.recipes.cache.TreeCacheListener; import org.apache.curator.retry.ExponentialBackoffRetry; import org.apache.zookeeper.CreateMode; import org.junit.jupiter.api.Test;public class zkOperate {@Testpublic void createNode() throws Exception {//创建一个客户连接RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);//启动连接client.start();//这个客户递归创建一个节点,节点类型为永久,路径为/java_node_test01/hello,内容为asdbclient.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/java_node_test01/hello","asdb".getBytes());//结束client.close();}@Testpublic void createNode2() throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(100000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);client.start();//这个客户递归创建一个节点,节点类型为临时,路径为/java_node_test01/hello,内容为asdbclient.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/java_node_test02/hello");Thread.sleep(5000);client.close();}@Testpublic void updateNode() throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);client.start();//这个客户递归设置/java_node_test01的值为testclient.setData().forPath("/java_node_test01","test".getBytes());client.close();}@Testpublic void delteNode() throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);client.start();client.delete().forPath("/java_node_test01");client.close();}@Testpublic void getNode() throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);client.start();//获取节点的值byte[] bs = client.getData().forPath("/java_node_test01");System.out.println(new String(bs));client.close();}@Testpublic void watch() throws Exception {RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,2);CuratorFramework client = CuratorFrameworkFactory.newClient("node01:2181,node02:2181,node03:2181",retryPolicy);client.start();//创建一个节点的监听,此监听不是一次性的,用完会自动再次注册TreeCache treeCache = new TreeCache(client,"/");//重写监听的方法,注意入参CuratorFramework client, TreeCacheEvent even,和入参的方法getData();getType();treeCache.getListenable().addListener(new TreeCacheListener() {@Overridepublic void childEvent(CuratorFramework client, TreeCacheEvent even) throws Exception {ChildData data = even.getData();if(data != null){System.out.println(even.getType());switch ( even.getType()){case NODE_ADDED:System.out.println("节点增加内容是:"+new String(data.getData())+";路径是:"+data.getPath());break;case NODE_UPDATED:System.out.println("NODE_UPDATED : "+ data.getPath() +" 数据:"+ new String(data.getData()));break;case NODE_REMOVED:System.out.println("NODE_REMOVED : "+ data.getPath() +" 数据:"+ new String(data.getData()));break;default:break;}}else {System.out.println("data is null : "+ even.getType());}}});//启动监听treeCache.start();//当前线程休眠待机Thread.sleep(500000);client.close();} }
zookeeper的javaAPI使用相关推荐
- Zookeeper命令操作(初始Zookeeper、JavaAPI操作、分布式锁实现、模拟12306售票分布式锁、Zookeeper集群搭建、选举投票)
Zookeeper命令操作(初始Zookeeper.JavaAPI操作.分布式锁实现.模拟12306售票分布式锁.Zookeeper集群搭建.选举投票) 1.初始Zookeeper Zookeeper ...
- Zookeeper之javaAPI的使用
2019独角兽企业重金招聘Python工程师标准>>> Java程序操作Zookeeper 1.创建java项目并导入相关jar包 主要jar包在主目录下 项目需要的相关依赖的jar ...
- 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...
- 学习笔记:快速入门ZooKeeper技术
学习视频:黑马程序员 ZooKeeper 视频教程,快速入门 ZooKeeper 技术 学习资料:黑马程序员 公众号提供的文档资料链接 | 提取码:dor4) 本文最后更新于 2022-04-25,若 ...
- hadoop学习之路(5)
HadoopHA 1.zookeeper配置 zoo.cfg # The number of milliseconds of each tick tickTime=2000 # The number ...
- Java三大技术平台是什么?
为了使软件开发人员.服务提供商和设备生产商可以针对特定的市场进行开发,SUN公司将Java划分为三个技术平台,它们分别是 JavaSE. JavaEE和 JavaME. Java SE( Java P ...
- Hadoop分布式存储和计算MapReduce的使用以及Hive数据仓库等内容精讲
一,zookeeper环境搭建 ZooKeeper致力于为分布式应用提供一个高性能.高可用,且具有严格顺序访问控制能力的分布式协调服务 服务器IP 主机名 myid的值 192.168.186.133 ...
- Zookeeper常用命令操作,javaAPI操作之Curator框架 API
浅谈:Zookeeper Zookeeper 概念 • Zookeeper 是 Apache Hadoop 项目下的一个子项目,是一个树形目录服务. • Zookeeper 翻译过来就是 动物园管理员 ...
- Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案例
Zookeeper [黑马程序员Zookeeper视频教程,快速入门zookeeper技术] 文章目录 Zookeeper 4 Zookeeper JavaAPI 操作 4.9 模拟12306 售票案 ...
最新文章
- 树莓派安装openCV做图像识别
- 用户不在 sudoers文件中,此事将被报告。
- C++类的定义和声明
- html 入门例子(二) 折行
- 成功解决AttributeError: module ‘tensorflow‘ has no attribute ‘contrib‘
- 基于RBGD的mapping
- 理解C#泛型运作原理
- 用户模块开发 分类模块 商品模块 购物车模块
- Asp.net(C#)利用File Field多文件上传
- 工业数据存储数据库选型比较
- 如何在OTN网站下载Grid方法(Oracle RAC)
- [TF进阶] 循环神经网络
- 怎么把kux格式转换成mp4?完美转换优酷kux格式
- pr导出视频的每一帧
- Mecanim 工作流
- Centos7 安装teamviewer
- python抓取网页图片教程_Python实现简单网页图片抓取完整代码实例
- linux 打包zip
- 稻盛和夫:经营为何需要哲学
- 索尼的hlg是什么_索尼HLG的拍摄使用方法