当前位置:   article > 正文

4.0 Zookeeper Java 客户端搭建

4.0 Zookeeper Java 客户端搭建

本教程使用的 IDE 为 IntelliJ IDEA,创建一个 maven 工程,命名为 zookeeper-demo,并且引入如下依赖,可以自行在maven中央仓库选择合适的版本,介绍原生 API 和 Curator 两种方式。

IntelliJ IDEA 相关介绍:

简单使用示例:

实例

  • Intellij IDEA 使用教程
  • Maven IntelliJ
    1. <dependency>
    2. <groupId>junit</groupId>
    3. <artifactId>junit</artifactId>
    4. <version>4.11</version>
    5. <scope>test</scope>
    6. </dependency>
    7. <dependency>
    8. <groupId>org.apache.zookeeper</groupId>
    9. <artifactId>zookeeper</artifactId>
    10. <version>3.4.8</version>
    11. </dependency>
    12. <dependency>
    13. <groupId>org.apache.curator</groupId>
    14. <artifactId>curator-framework</artifactId>
    15. <version>4.0.0</version>
    16. </dependency>
    17. <dependency>
    18. <groupId>org.apache.curator</groupId>
    19. <artifactId>curator-recipes</artifactId>
    20. <version>4.0.0</version>
    21. </dependency>

    maven 工程目录结构

    一、客户端的 zookeeper 原生 API

    使用 zookeeper 原生 API,连接上一教程搭建的三台服务组成的集群,因为连接需要时间,用 countDownLatch 阻塞,等待连接成功,控制台输出连接状态!

    实例

    1. ...public static void main(String[] args) {
    2. try {
    3. final CountDownLatch countDownLatch=new CountDownLatch(1);
    4. ZooKeeper zooKeeper=
    5. new ZooKeeper("192.168.3.33:2181," +
    6. "192.168.3.35:2181,192.168.3.37:2181",
    7. 4000, new Watcher() {
    8. @Override
    9. public void process(WatchedEvent event) {
    10. if(Event.KeeperState.SyncConnected==event.getState()){
    11. //如果收到了服务端的响应事件,连接成功
    12. countDownLatch.countDown();
    13. }
    14. }
    15. });
    16. countDownLatch.await();
    17. //CONNECTED
    18. System.out.println(zooKeeper.getState());
    19. }
    20. }
    21. ...

    控制台输出 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 等。
  • 简单使用示例:
    1. public class CuratorDemo {
    2. public static void main(String[] args) throws Exception {
    3. CuratorFramework curatorFramework=CuratorFrameworkFactory.
    4. builder().connectString("192.168.3.33:2181," +
    5. "192.168.3.35:2181,192.168.3.37:2181").
    6. sessionTimeoutMs(4000).retryPolicy(new
    7. ExponentialBackoffRetry(1000,3)).
    8. namespace("").build();
    9. curatorFramework.start();
    10. Stat stat=new Stat();
    11. //查询节点数据
    12. byte[] bytes = curatorFramework.getData().storingStatIn(stat).forPath("/runoob");
    13. System.out.println(new String(bytes));
    14. curatorFramework.close();
    15. }
    16. }

    上一步设置了 /runoob 节点值,所以控制台输出。

    curator 相关参考链接: Apache Curator

  • 希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/78209
推荐阅读
  

闽ICP备14008679号