客户端连接示例

Zookeeper类,是我们编程时最常用的类文件。这个类是Zookeeper客户端的主要类文件。如果要使用Zookeeper服务,应用程序首先必须创建一个Zookeeper实例,这时就需要使用此类。一旦客户端和Zookeeper服务建立起了连接,Zookeeper系统将会给次连接会话分配一个ID值,并且客户端将会周期性的向服务器端发送心跳来维持会话连接。只要连接有效,客户端就可以使用Zookeeper API来做相应处理了。
     而客户端能进行的操作也就是服务中能进行的9中操作(参见Zookeeper–简介 之Zookeeper节点的属性 )
    下面是一个简单的客户端连接,节点的创建等操作的示例:

public class ZooKeeperTest {public static final int SESSION_TIMEOUT = 30000;private ZooKeeper zk;private Watcher wh = new Watcher(){public void process(WatchedEvent event){System.out.println(event.toString());//如果连接诶成功,则输出其状态if(event.getState() == KeeperState.SyncConnected){System.out.println("客户端与zookeeper的连接会话创建成功"+event.getState());}}};//创建zookeeper客户端对象public void createZKInstance() throws IOException{zk = new ZooKeeper("192.168.57.130:2181,192.168.57.131:2181,192.168.57.132:2181",SESSION_TIMEOUT,wh);System.out.println("状态:"+zk.getState());}//使用客户端来对zookeeper操作public void zkOperations() throws KeeperException, InterruptedException{//创建一个节点System.out.println("创建javanode节点");zk.create("/javanode2", "sss".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);String data = new String(zk.getData("/javanode2", false, null));System.out.println(data);}public void list(String groupName) throws KeeperException, InterruptedException{try{List<String> children = zk.getChildren(groupName, false);if(children.isEmpty()){System.out.println("No members in group "+groupName);System.exit(1);}System.out.println("--------------");for(String child:children){System.out.println(child);}System.out.println("--------------");}catch(KeeperException.NoNodeException e){System.out.println("Group :"+groupName +" does not exist");System.exit(1);}}public void zkClose() throws InterruptedException{zk.close();System.out.println("客户端关闭");}public static void main(String[] args) throws IOException, KeeperException, InterruptedException{ZooKeeperTest zkt  = new ZooKeeperTest();zkt.createZKInstance();zkt.zkOperations();zkt.list("/");zkt.zkClose();}
}运行结果为:
状态:CONNECTING
创建javanode节点
WatchedEvent state:SyncConnected type:None path:null
客户端与zookeeper的连接会话创建成功SyncConnected
--
sss
--------------
javanode2
zookeeper
pomelo
hbase
--------------
客户端关闭

Watch触发器示例

对Watch触发器进行补充(关于watch详细,参见文章 Zookeeper–简介 之Watch触发器)
    下面是一个watch的简单示例:


public class SetDataSync implements Watcher{private static CountDownLatch connectedSemaphore = new CountDownLatch(1);private static ZooKeeper zk = null;private static Stat stat = new Stat();public void process(WatchedEvent event) {if(event.getState() == KeeperState.SyncConnected ){if(event.getType() == EventType.None && event.getPath() == null){connectedSemaphore.countDown();}else if(event.getType() == EventType.NodeDataChanged){try {System.out.println(new String(zk.getData(event.getPath(), true, stat)));System.out.println(stat.getCzxid()+","+stat.getMzxid()+","+stat.getVersion());} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}}public static void main(String[] args) throws IOException, KeeperException, InterruptedException{String path = "/synctest";//创建zookeeper的客户端zk = new ZooKeeper("192.168.57.130:2181",30000,new SetDataSync());connectedSemaphore.await();System.out.println("----连接成功....");zk.create(path, "test".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);System.out.println(new String(zk.getData(path, true, stat)));System.out.println(stat.getCzxid()+","+stat.getMzxid()+","+stat.getVersion());zk.setData(path, "up1".getBytes(), -1);Thread.sleep(Integer.MAX_VALUE);}}

Zookeeper--客户端操作相关推荐

  1. 【Java从0到架构师】Zookeeper 应用 - Java 客户端操作、服务器动态感知、分布式锁业务处理

    分布式基石 Zookeeper 框架全面剖析 Java 客户端操作 Java 客户端 API 服务器的动态感知 服务注册 服务发现 分布式锁业务处理 单机环境(一个虚拟机中) 分布式环境_同名节点 分 ...

  2. zookeeper客户端库curator分析

    zookeeper客户端库curator分析 前言 综述 zookeeper保证 理解zookeeper的顺序一致性 之前使用zookeeper客户端踩到的坑 curator 连接保证 连接状态监控以 ...

  3. Zookeeper客户端Curator使用详解

    http://www.jianshu.com/p/70151fc0ef5d Zookeeper客户端Curator使用详解 简介 Curator是Netflix公司开源的一套zookeeper客户端框 ...

  4. zookeeper专题:使用zookeeper客户端实现动态监听节点并获取数据

    文章目录 1. zookeeper原生客户端 2. Curator客户端 1. zookeeper原生客户端 zookeeper原生客户端就是zookeeper官方自带的客户端,作为代码与zk服务器交 ...

  5. 【转】ZooKeeper学习第二期--Zookeeper命令操作

    一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...

  6. Zookeeper客户端Curator详解

    一.Curator 客户端使用 Curator是 Netflix公司开源的一套ZooKeeper客户端框架,和 ZkClient一样它解决了非常底层的细节开发工作,包括连接.重连.反复注册Watche ...

  7. Zookeeper 客户端之 Curator

    之前写的一个在 Linux 上安装部署 Zookeeper 的笔记,其他操作系统请自行谷歌教程吧. 本文案例工程已经同步到了 github,传送门. PS : 目前还没有看过Curator的具体源码, ...

  8. ZooKeeper客户端Curator的基本使用

    前提:ZooKeeper版本:3.4.14      Curator版本:2.13.0 1.什么是Curator Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Z ...

  9. zookeeper客户端 curator的使用

    curator简介 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,提供了各种应用场景的实现封装,flue ...

  10. 【高级篇】详解Zookeeper客户端Curator

    一.序言 之前分享过一篇关于Curotor的基本应用[基础篇]详解Zookeeper客户端Curator,如果对Curator没有了解的可以看看,本文分享关于Curator的一些高级特性,在监听和le ...

最新文章

  1. 张一鸣、王欣、罗永浩三家对垒微信,张小龙如何应对?
  2. SMT32如何进入sleep模式
  3. 怎样用python搭建简单的系统_如何用Python搭建一个简单的推荐系统?
  4. python把c语言的.h文件转为c++的.cpp和.h文件
  5. [CodeForces1070C]Cloud Computing(2018-2019 ICPC, NEERC, Southern Subregional Contest )
  6. 使用CloudFlare 的 PKI 工具集 cfssl 来生成 Certificate Authority (CA) 证书和秘钥文件
  7. php 声波图,Canvas 美丽的声波图
  8. 【nRF51822学习教程】SDK框架分析
  9. linux待机流程,Linux睡眠喚醒機制--Kernel態
  10. logistic模型原理与推导过程分析(2)
  11. Python 模拟微博登陆,亲测有效!
  12. PHP对内存的运行,在PHP中运行密集的批处理过程,并避免内存耗尽
  13. acs712电流检测怎么用_工程师都用这个巧妙廉价的电流检测电路!
  14. U盘插入电脑提示未能成功安装设备驱动程序,这个要怎么处理呢
  15. Python实现大文本文件分割成多个小文件
  16. 2022年第七届IEEE云计算与大数据分析国际会议
  17. Lab4 Architecture Lab
  18. 计算机c盘能分区吗,电脑C盘还可以分盘吗?
  19. PDF编辑方法,PDF文件怎么修改内容
  20. unity5.6.5适配Android P刘海屏,两侧去黑边

热门文章

  1. “独角兽”深度研究报告:中国的“独角兽”为何这么牛?
  2. 中文文案排版风格指南
  3. 服务器独享宽带和共享宽带有那些区别
  4. 【论文笔记】基于深度学习的视觉检测及抓取方法
  5. 假定在使用CSMA/CD协议的10Mbit/s以太网中某个站在发送数据时检测到碰撞,执行退避算法时选择了随机数r=100.试问这个站需要等待多长时间后才能再次发送数据?如果是100Mbit/s的以太网
  6. android 第三方社区,从友盟微社区看Android第三方SDK架构实践
  7. 折腾家里的龟速网络有感
  8. 山西民生云认证工资_山西民生云养老资格认证手机版-山西民生云社会保险综合服务平台v2.2 最新版-007游戏网...
  9. 计算机校本培训措施,2017度信息技术校本培训计划
  10. 关于数据分析复购率与回购率的定义