zookeeper的java客户端初步使用
来源:互联网 发布:搜狗关键词优化 编辑:程序博客网 时间:2024/06/03 22:40
需要的jar包:
zookeeper-3.4.5\zookeeper-3.4.5.jar
zookeeper-3.4.5\lib\所有jar包
在java客户端对zookeeper进行增删改查操作:
public class SimpleZkClient {private ZooKeeper zkCli = null;@Beforepublic void init() throws Exception {CountDownLatch sampleLatch = new CountDownLatch(1);Watcher sampleWatcher = new ConnectedWatcher (sampleLatch);zkCli = new ZooKeeper("192.168.77.70:2181,192.168.77.80:2181", 2000, sampleWatcher);/* 只有当zkCli链接成功(状态为 SyncConnected)时,此函数调用才结束 */ waitUntilConnected(zkCli, sampleLatch); /*接下来就可以继续zkCli访问了,避免因为zkCli未连接成功时的访问出错 */}public static void waitUntilConnected(ZooKeeper testZooKeeper, CountDownLatch testLatch) { if(testZooKeeper.getState() == States.CONNECTING) { try { testLatch.await(); } catch (InterruptedException err) { System.out.println("Latch exception"); } } } static class ConnectedWatcher implements Watcher { private CountDownLatch connectedLatch; ConnectedWatcher(CountDownLatch connectedLatch) { this.connectedLatch = connectedLatch; /* CountDownLatch实例初始化时设为1即可 */ } /* * zookeeper服务集群监听到某个指定数据节点上发生的事件后,会通知监听注册者(客户端), * 然后客户端就会调用process方法,并将接收到的事件event作为参数传递给process方法 */ @Override public void process(WatchedEvent event) { if (event.getState() == KeeperState.SyncConnected) { connectedLatch.countDown(); /* ZK连接成功时,计数器由1减为0 */ } System.out.println("节点:" + event.getPath() + " 发生了事件:" + event.getType()); } } /* * 在zookeeper中创建znode节点 */@Testpublic void testCreateNode() throws UnsupportedEncodingException, KeeperException, InterruptedException {// PERSISTENT 是永久节点String node_PERSISTENT = zkCli.create("/itheima", "伟大".getBytes("utf-8"), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);// EPHEMERAL 是临时节点,当zkCli.close()之后就删除了。String node_EPHEMERAL = zkCli.create("/itheima/cloud1", "70".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);System.out.println("创建了一个永久节点: " + node_PERSISTENT);System.out.println("创建了一个临时节点: " + node_EPHEMERAL);Thread.sleep(Long.MAX_VALUE);}/* * 获取znode中的数据内容 */@Testpublic void testGetNodeData() throws KeeperException, InterruptedException, UnsupportedEncodingException {byte[] data = zkCli.getData("/itheima", true, null);System.out.println(new String(data, "utf-8"));}/* * 修改znode节点的数据 */@Testpublic void testModifyNodeData() throws UnsupportedEncodingException, KeeperException, InterruptedException {byte[] data = zkCli.getData("/itheima", true, null);System.out.println("修改之前的值: " + new String(data, "utf-8"));// 修改数据时指定的版本号,可以用-1来匹配所有版本zkCli.setData("/itheima", "伟大的培训机构".getBytes("utf-8"), -1);data = zkCli.getData("/itheima", true, null);System.out.println("修改之后的值: " + new String(data, "utf-8"));}/* * 删除znode节点 * 注意 : zk不支持递归删除节点,所以必须先将子节点删除才能删除父节点. */@Testpublic void testDelZnode() throws InterruptedException, KeeperException {Stat exists = zkCli.exists("/itheima", true);System.out.println(exists == null ? ("itheima不存在了") : ("itheima还存在"));List<String> nodes = zkCli.getChildren("/itheima", false); for (String node : nodes) { zkCli.delete("/itheima/" + node, -1); } zkCli.delete("/itheima", -1);Stat exists2 = zkCli.exists("/itheima", true);System.out.println(exists2 == null ? ("itheima不存在了") : ("itheima还存在"));}}
结果:
testCreateNode():
testGetNodeData():
testModifyNodeData():
testDelZnode():
阅读全文
0 0
- zookeeper的java客户端初步使用
- zookeeper的java客户端监听器的使用
- Zookeeper Java客户端API的使用
- zookeeper(二) java客户端api的使用
- ZooKeeper 客户端的使用
- Zookeeper客户端的使用
- Zookeeper的Java客户端
- zookeeper的java客户端
- zookeeper 客户端编程的使用
- zookeeper的Java客户端API
- zookeeper的java客户端api
- zookeeper java 客户端ACL权限 使用
- Zookeeper(四)Java客户端API使用
- 使用Java客户端API操作Zookeeper
- 【ZooKeeper】Java客户端API使用介绍。
- ZooKeeper 学习 (四) ZooKeeper Java客户端API使用
- Java的初步使用
- Zookeeper的初步认识
- 基础编程题-5
- 如何才能学好javascript
- Node异步创建多级目录
- FollowMe设计思路
- 别扯了,这世界上根本没有稳定的工作
- zookeeper的java客户端初步使用
- 【原创】【专栏】《Linux设备驱动程序》--- LDD3源码目录结构和源码分析经典链接
- 中心部件
- Android系统进程间通讯之Binder机制(一)
- 根据URL获取网页TXT源码【Android】
- 51 Nod1091线段重合
- java.net.SocketException: socket closed 解决方式
- ionic路由嵌套
- 映射问题(让查询出的结果和实体类对应)