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

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() {
                    @Override
                    public void process(WatchedEvent event) {
                        if(Event.KeeperState.SyncConnected==event.getState()){
                            //如果收到了服务端的响应事件,连接成功
                            countDownLatch.countDown();
                        }
                    }
                });
            countDownLatch.await();
            //CONNECTED
            System.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(new
                    ExponentialBackoffRetry(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.kler.cn/news/232561.html

相关文章:

  • B2080 计算多项式的值(洛谷)
  • 【Linux】Linux开发工具(yum、gdb、git)详解
  • API接口访问鉴权设计和实现的经验总结
  • 如何开始深度学习,从实践开始
  • seata分布式事务
  • Redis 单线程
  • Qt网络编程-ZMQ的使用
  • 算法随想录第五十一天打卡|309.最佳买卖股票时机含冷冻期, 714.买卖股票的最佳时机含手续费 ,总结
  • npm install express -g报错或一直卡着,亲测可解决
  • HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘
  • 蓝桥杯省赛模板构建——uart
  • 告别mPDF迎来TCPDF和中文打印遇到的问题
  • 【数据分享】1929-2023年全球站点的逐年平均风速(Shp\Excel\免费获取)
  • C#用Array类的FindAll方法和List<T>类的Add方法按关键词在数组中检索元素并输出
  • 【专业技术】高效并行分布式深度学习策略,助力模型训练与量化
  • 戴上HUAWEI WATCH GT 4,解锁龙年新玩法
  • 拦截器配置,FeignClient根据业务规则实现微服务动态路由
  • 什么是API
  • C#系列-数据结构+递归算法+排序算法(3)
  • 网络安全产品之认识准入控制系统
  • 力扣面试题 05.06. 整数转换(位运算)
  • Springboot 整合 Elasticsearch(三):使用RestHighLevelClient操作ES ①
  • 神经网络 | 基于 CNN 模型实现土壤湿度预测
  • re:从0开始的CSS学习之路 8. 浏览器默认样式
  • CleanMyMac2024智能算法有哪些优点和缺点?
  • Qt PCL学习(文章链接汇总)
  • C#,聚会数(相遇数,Rencontres Number)的算法与源代码
  • 火星文:网络时代下的语言
  • c实现链表
  • Ubuntu文件系统结构