当前位置: 首页 > news >正文

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.lryc.cn/news/297068.html

相关文章:

  • C#既然数组长度不可改变,那么如何动态调整集合类型数组大小,以便添加或删除元素?
  • 3.1 Verilog 连续赋值
  • 【http】2、http request header Origin 属性、跨域 CORS、同源、nginx 反向代理、预检请求
  • LangChain pdf的读取以及向量数据库的使用
  • VUE学习——事件修饰符
  • 开放平台技术架构设计与实现的实战总结
  • 飞桨自然语言处理框架 paddlenlp的 trainer
  • SQL世界之命令语句Ⅲ
  • Snoop Version 2 Packet Capture File Format
  • 扩展说明: 指令微调 Llama 2
  • VUE 全局设置防重复点击
  • 备战蓝桥杯---动态规划(基础1)
  • CVE-2018-19518 漏洞复现
  • Python爬虫实战:抓取猫眼电影排行榜top100#4
  • Fiddler抓包工具之fiddler界面工具栏介绍
  • LabVIEW工业监控系统
  • Linux 文件连接:符号链接与硬链接
  • 数据分类分级
  • 第三十天| 51. N皇后
  • pythn-scipy 查漏补缺
  • 【JavaScript 漫游】【013】Date 对象知识点摘录
  • vue.config.js和webpack.config.js区别
  • H12-821_73
  • postman执行批量测试
  • 蓝桥杯基础知识8 list
  • 【DDD】学习笔记-理解领域模型
  • v-if 和v-show 的区别
  • LabVIEW网络测控系统
  • 攻防世界 CTF Web方向 引导模式-难度1 —— 11-20题 wp精讲
  • 华为Eth-Trunk级联堆叠接入IPTV网络部署案例