14.ZooKeeper Java API 使用样例
转自:http://www.aboutyun.com/thread-7332-1-1.html
1 package com.taobao.taokeeper.research.sample; 2 3 import java.io.IOException; 4 import java.util.concurrent.CountDownLatch; 5 6 import org.apache.zookeeper.CreateMode; 7 import org.apache.zookeeper.KeeperException; 8 import org.apache.zookeeper.WatchedEvent; 9 import org.apache.zookeeper.Watcher; 10 import org.apache.zookeeper.Watcher.Event.KeeperState; 11 import org.apache.zookeeper.ZooDefs.Ids; 12 import org.apache.zookeeper.ZooKeeper; 13 14 import common.toolkit.java.util.ObjectUtil; 15 16 /** 17 * ZooKeeper Java Api 使用样例<br> 18 * ZK Api Version: 3.4.3 19 * 20 * @author nileader/nileader@gmail.com 21 */ 22 public class JavaApiSample implements Watcher { 23 24 private static final int SESSION_TIMEOUT = 10000; 25 private static final String CONNECTION_STRING = "test.zookeeper.connection_string:2181"; 26 private static final String ZK_PATH = "/nileader"; 27 private ZooKeeper zk = null; 28 29 private CountDownLatch connectedSemaphore = new CountDownLatch( 1 ); 30 31 /** 32 * 创建ZK连接 33 * @param connectString ZK服务器地址列表 34 * @param sessionTimeout Session超时时间 35 */ 36 public void createConnection( String connectString, int sessionTimeout ) { 37 this.releaseConnection(); 38 try { 39 zk = new ZooKeeper( connectString, sessionTimeout, this ); 40 connectedSemaphore.await(); 41 } catch ( InterruptedException e ) { 42 System.out.println( "连接创建失败,发生 InterruptedException" ); 43 e.printStackTrace(); 44 } catch ( IOException e ) { 45 System.out.println( "连接创建失败,发生 IOException" ); 46 e.printStackTrace(); 47 } 48 } 49 50 /** 51 * 关闭ZK连接 52 */ 53 public void releaseConnection() { 54 if ( !ObjectUtil.isBlank( this.zk ) ) { 55 try { 56 this.zk.close(); 57 } catch ( InterruptedException e ) { 58 // ignore 59 e.printStackTrace(); 60 } 61 } 62 } 63 64 /** 65 * 创建节点 66 * @param path 节点path 67 * @param data 初始数据内容 68 * @return 69 */ 70 public boolean createPath( String path, String data ) { 71 try { 72 System.out.println( "节点创建成功, Path: " 73 + this.zk.create( path, // 74 data.getBytes(), // 75 Ids.OPEN_ACL_UNSAFE, // 76 CreateMode.EPHEMERAL ) 77 + ", content: " + data ); 78 } catch ( KeeperException e ) { 79 System.out.println( "节点创建失败,发生KeeperException" ); 80 e.printStackTrace(); 81 } catch ( InterruptedException e ) { 82 System.out.println( "节点创建失败,发生 InterruptedException" ); 83 e.printStackTrace(); 84 } 85 return true; 86 } 87 88 /** 89 * 读取指定节点数据内容 90 * @param path 节点path 91 * @return 92 */ 93 public String readData( String path ) { 94 try { 95 System.out.println( "获取数据成功,path:" + path ); 96 return new String( this.zk.getData( path, false, null ) ); 97 } catch ( KeeperException e ) { 98 System.out.println( "读取数据失败,发生KeeperException,path: " + path ); 99 e.printStackTrace(); 100 return ""; 101 } catch ( InterruptedException e ) { 102 System.out.println( "读取数据失败,发生 InterruptedException,path: " + path ); 103 e.printStackTrace(); 104 return ""; 105 } 106 } 107 108 /** 109 * 更新指定节点数据内容 110 * @param path 节点path 111 * @param data 数据内容 112 * @return 113 */ 114 public boolean writeData( String path, String data ) { 115 try { 116 System.out.println( "更新数据成功,path:" + path + ", stat: " + 117 this.zk.setData( path, data.getBytes(), -1 ) ); 118 } catch ( KeeperException e ) { 119 System.out.println( "更新数据失败,发生KeeperException,path: " + path ); 120 e.printStackTrace(); 121 } catch ( InterruptedException e ) { 122 System.out.println( "更新数据失败,发生 InterruptedException,path: " + path ); 123 e.printStackTrace(); 124 } 125 return false; 126 } 127 128 /** 129 * 删除指定节点 130 * @param path 节点path 131 */ 132 public void deleteNode( String path ) { 133 try { 134 this.zk.delete( path, -1 ); 135 System.out.println( "删除节点成功,path:" + path ); 136 } catch ( KeeperException e ) { 137 System.out.println( "删除节点失败,发生KeeperException,path: " + path ); 138 e.printStackTrace(); 139 } catch ( InterruptedException e ) { 140 System.out.println( "删除节点失败,发生 InterruptedException,path: " + path ); 141 e.printStackTrace(); 142 } 143 } 144 145 public static void main( String[] args ) { 146 147 JavaApiSample sample = new JavaApiSample(); 148 sample.createConnection( CONNECTION_STRING, SESSION_TIMEOUT ); 149 if ( sample.createPath( ZK_PATH, "我是节点初始内容" ) ) { 150 System.out.println(); 151 System.out.println( "数据内容: " + sample.readData( ZK_PATH ) + "\n" ); 152 sample.writeData( ZK_PATH, "更新后的数据" ); 153 System.out.println( "数据内容: " + sample.readData( ZK_PATH ) + "\n" ); 154 sample.deleteNode( ZK_PATH ); 155 } 156 157 sample.releaseConnection(); 158 } 159 160 /** 161 * 收到来自Server的Watcher通知后的处理。 162 */ 163 @Override 164 public void process( WatchedEvent event ) { 165 System.out.println( "收到事件通知:" + event.getState() +"\n" ); 166 if ( KeeperState.SyncConnected == event.getState() ) { 167 connectedSemaphore.countDown(); 168 } 169 170 } 171 172 } 173 输出结果: 174 收到事件通知:SyncConnected 175 176 节点创建成功, Path: /nileader, content: 我是节点初始内容 177 178 获取数据成功,path:/nileader 179 数据内容: 我是节点初始内容 180 181 更新数据成功,path:/nileader, stat: 42950186407,42950186408,1350820182392,1350820182406,1,0,0,232029990722229433,18,0,42950186407 182 183 获取数据成功,path:/nileader 184 数据内容: 更新后的数据 185 186 删除节点成功,path:/nileader
14.ZooKeeper Java API 使用样例相关推荐
- 【ZooKeeper Notes 3】ZooKeeper Java API 使用样例
查看PDF版本 转载请注明:@ni掌柜 nileader@gmail.com ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务框架,包含一组简单的原语集合.通过这些原语言的组合使用, ...
- 2021年大数据ZooKeeper(五):ZooKeeper Java API操作
目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...
- chatgpt api请求样例
chatgpt去年刚出来时我就到openai注册了账号,必须用国外的线路才能注册,正常注册不了, 注册完要用国外手机接收验证码,才能使用,我卡到验证码就没继续用了, 昨晚,找了几个国内的镜像,用了一番 ...
- 简单的Java代码测试样例设计
简单的Java代码测试样例设计 函数一 public static int findLast(int[] x, int y) {for (int i = x.length - 1; i > 0; ...
- java设计模式演示样例
创建模式 1.工厂方法模式(Factory Method) 将程序中创建对象的操作,单独出来处理,创建一个产品的工厂接口,把实际的工作转移到详细的子类.大大提高了系统扩展的柔性,接口的抽象化处理给相 ...
- JAVA大数据(2)--ZooKeeper Java API使用
1 准备工作 拷贝ZooKeeper安装目录下的zookeeper.x.x.x.jar文件到项目的classpath路径下. 2 创建连接和回调接口 首先需要创建ZooKeeper对象, 后续的一切操 ...
- 一个优雅的后端API接口样例和代码实现方案
前言 在移动互联网,分布式.微服务盛行的今天,现在项目绝大部分都采用的微服务框架,前后端分离方式,(题外话:前后端的工作职责越来越明确,现在的前端都称之为大前端,技术栈以及生态圈都已经非常成熟:以前后 ...
- java监听器演示样例
监听器的原理是观察者模式.就像明星(事件源)聚拢了一群粉丝(观察者).当明星有啥举动的时候会通过粉丝们报道出去. 订阅信息.计算器button都是该原理的应用. 以下写了一个监听器的小样例: pack ...
- java 内存泄漏样例_一次线上Java应用内存泄漏分析实例
由于JVM的内存管理采用GC垃圾自动回收机制,这使得Java程序员在编程的时候确实可以从内存管理中释放出来,但这也引发了另外一个大问题,一旦Java应用出现内存泄漏的时候,常常让人措手不及,陷入无从下 ...
最新文章
- WINDOWS下安装MYSQL—图文详解
- linux重启和关机命令
- img加载不出来,给个默认图片。
- C++中使用try{}catch()的优/缺点
- 如何规划农商行商业智能系统中的决策分析系统?
- 如何给企业选择一款ERP系统
- jsp servlet mysql 乱码_关于jsp和servlet中的乱码问题
- Android 手机UI界面设计采纳网站
- 软件可靠性的一些关注点
- sql注入搞事情(连载一)
- SEO应届生,如何快速的了解SEO?
- 原创:职场最忌讳的几大“想当然”
- 产品日记(二)一些愚见, 记录在此
- P3373 【模板】线段树1和P3373 【模板】线段树 2
- 【常用芯片】ULN2003工作原理及中文资料(实例:STM32驱动28BYJ48步进电机)
- 多任务学习(Multi-task Learning)方法总结
- Apache shiro 官方API (中文版)(承蒙大佬们看重 小弟整理了下 无需积分 编辑的不好 希望帮到你们)
- Java 以任意数量空格分割字符串方式
- elasticsearch性能测试工具rally深入详解
- wind上怎么连接mysql_windows上连接mysql数据库怎么连接
热门文章
- 工业机器人电柜布线_协作并联,重新注解并联机器人
- php中间值,比较当前值和下一个值,并在中间推送数组(Adodb)PHP
- sublime运行python代码python没显示_解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享...
- Python之try except异常处理工作机制和案例解析
- 卷积层 convolutional networks
- 【信息抽取】介绍一种端到端的关系抽取方法
- 【杂谈】如何在专家指导下系统性学习自然语言处理
- 365篇原创后,有三AI喊你正式加入来不来?
- 有三AI小程序上线,把你的代码show给世界
- 【AI白身境】深度学习必备图像基础