前言

接下来,还是从创建会话、创建节点、读取数据、更新数据、删除节点等方面来介绍如何使用zkClient 这个zookeeper客户端

添加依赖:

在pom.xml⽂件中添加如下内容

<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.2</version>
</dependency>

1、创建会话

使⽤ZkClient可以轻松的创建会话,连接到服务端

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class CreateSession {
    /*
        借助zkClient完成会话创建
     */
    public static void main(String[] args) {
        /**
         * 创建一个zkClient实例就可以完成连接,完成会话的创建
         * serverString : 服务器连接地址
         * 注意:zkClient通过对zookeeperAPI内部封装,将这个异步创建会话的过程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
    }
}

2、创建节点

ZkClient提供了递归创建节点的接口,即其帮助开发者先完成父节点的创建,再创建子节点

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class CreateNote {
    /*
        借助zkClient完成会话创建
     */
    public static void main(String[] args) {
        /**
         * 创建一个zkClient实例就可以完成连接,完成会话的创建
         * serverString : 服务器连接地址
         * 注意:zkClient通过对zookeeperAPI内部封装,将这个异步创建会话的过程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 创建节点
        /**
         *  createParents:是否要创建父节点,如果值为true,则就会递归创建节点
         */
        zkClient.createPersistent("/lg-zkClient/lg-c1", true);
        System.out.println("节点递归创建完成");
    }
}

值得注意的是,在原生态接口中是无法创建成功的(⽗节点不存在),但是通过ZkClient通过设置createParents参数为true可以递归的先创建父节点,再创建子节点

3、删除节点

ZkClient提供了递归删除节点的接口,即其帮助开发者先删除所有子节点(存在),再删除父节点

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class DeleteNote {
    /*
        借助zkClient完成会话创建
     */
    public static void main(String[] args) {
        /**
         * 创建一个zkClient实例就可以完成连接,完成会话的创建
         * serverString : 服务器连接地址
         * 注意:zkClient通过对zookeeperAPI内部封装,将这个异步创建会话的过程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 递归删除子节点
        String path = "/lg-zkClient/lg-c1";
        zkClient.createPersistent(path "/c11");
        zkClient.deleteRecursive(path);
        System.out.println("递归删除成功");
    }
}

结果表明ZkClient可直接删除带子节点的⽗节点,因为其底层先删除其所有子节点,然后再删除父节点

4、获取子节点

package com.lagou.zkClient;
import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;
import java.util.List;
public class Get_NoteChildren {
    /*
        借助zkClient完成会话创建
     */
    public static void main(String[] args) throws InterruptedException {
        /**
         * 创建一个zkClient实例就可以完成连接,完成会话的创建
         * serverString : 服务器连接地址
         * 注意:zkClient通过对zookeeperAPI内部封装,将这个异步创建会话的过程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 获取子节点列表
        List<String> children = zkClient.getChildren("/lg-zkClient");
        System.out.println(children);
        // 注册监听对象
        /*
            客户端可以对一个不存在的节点进行子节点变更的监听
            只要该节点的子节点的列表发生变化,或者该节点本身被创建或则删除,都会触发监听
         */
        zkClient.subscribeChildChanges("/lg-zkClient-get", new IZkChildListener() {
            /**
             * @param list : 变化后的子节点列表
             */
            @Override
            public void handleChildChange(String parentPath, List<String> list) throws Exception {
                System.out.println(parentPath   "的子节点列表发生了变化,变化后的子节点列表为"   list);
            }
        });
        // 测试
        zkClient.createPersistent("/lg-zkClient-get");
        Thread.sleep(1000);
        zkClient.createPersistent("/lg-zkClient-get/c1");
        Thread.sleep(1000);
    }
}

结果表明:客户端可以对⼀个不存在的节点进行子节点变更的监听。⼀旦客户端对⼀个节点注册了子节点列表变更监听之后,那么当该节点的子节点列表发生变更时,服务端都会通知客户端,并将最新的子节点列表发送给客户端,该节点本身的创建或删除也会通知到客户端。

5、获取数据(节点是否存在、更新、删除)

package com.lagou.zkClient;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
public class Note_API {
    /*
        借助zkClient完成会话创建
     */
    public static void main(String[] args) throws InterruptedException {
        /**
         * 创建一个zkClient实例就可以完成连接,完成会话的创建
         * serverString : 服务器连接地址
         * 注意:zkClient通过对zookeeperAPI内部封装,将这个异步创建会话的过程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 创建节点
        /**
         *  createParents:是否要创建父节点,如果值为true,则就会递归创建节点
         */
        zkClient.createPersistent("/lg-zkClient/lg-c1", true);
        System.out.println("节点递归创建完成");
        // 判断节点是否存在
        String path = "/lg-zkClient-Ep";
        boolean exists = zkClient.exists(path);
        if (!exists) {
            // 创建临时节点
            zkClient.createEphemeral(path, "123");
        }
        // 读取节点内容
        Object o = zkClient.readData(path);
        System.out.println(o);
        // 注册监听
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            /*
                当节点数据内容发生变化时,执行的回调方法
                s : path
                o : 变化后的节点内容
             */
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(s   ":该节点内容被更新,更新后的内容:"   o);
            }
            /*
                当节点被删除时,会执行的回调方法
                s : path
             */
            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.out.println(s   ":该节点被删除");
            }
        });
        // 更新节点内容
        zkClient.writeData(path, "456");
        Thread.sleep(2000);
        // 删除节点
        zkClient.delete(path);
        Thread.sleep(2000);
    }
}

到此这篇关于Zookeeper ZkClient使用介绍的文章就介绍到这了,更多相关Zookeeper ZkClient内容请搜索Devmax以前的文章或继续浏览下面的相关文章希望大家以后多多支持Devmax!

Zookeeper ZkClient使用介绍的更多相关文章

  1. SpringCloud gateway+zookeeper实现网关路由的详细搭建

    这篇文章主要介绍了SpringCloud gateway+zookeeper实现网关路由,本文通过图文实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  2. Spring Boot整合Zookeeper实现分布式锁的场景分析

    这篇文章主要介绍了Spring Boot整合Zookeeper实现分布式锁,zk实现分布式锁完全是依靠zk节点类型当中的临时序号节点来实现的,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

  3. Java Spring Boot 集成Zookeeper

    这篇文章主要介绍了Java Spring Boot 集成Zookeeper,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下

  4. SpringCloud集成zookeeper实现服务注册并访问功能

    zookeeper和eureka一样,是用于充当服务注册功能服务器的一个springcloud插件,这篇文章主要介绍了SpringCloud集成zookeeper实现服务注册并访问,需要的朋友可以参考下

  5. zookeeper集群搭建超详细过程

    这篇文章主要介绍了zookeeper集群搭建超详细过程,本文对zookeeper集群测试通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下

  6. 使用Zookeeper分布式部署PHP应用程序

    今天小编就为大家分享一篇关于使用Zookeeper分布式部署PHP应用程序,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

  7. Java zookeeper服务的使用详解

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等

  8. zookeeper+Springboot实现服务器动态上下线监听教程详解

    这篇文章主要介绍了zookeeper+Springboot实现服务器动态上下线监听,主要介绍了什么是服务器动态上下线监听及为什么要实现对服务器上下线的监听,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下

  9. Java中的zookeeper常用命令详解

    这篇文章主要介绍了Java中的zookeeper常用命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  10. ZooKeeper集群操作及集群Master选举搭建启动

    这篇文章主要为大家介绍了ZooKeeper集群操作及集群Master选举搭的建启动详解,<BR>有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部