返回顶部
首页 > 资讯 > 后端开发 > Python >ZookeeperZkClient使用介绍
  • 228
分享到

ZookeeperZkClient使用介绍

2024-04-02 19:04:59 228人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言1、创建会话2、创建节点3、删除节点4、获取子节点5、获取数据(节点是否存在、更新、删除)前言 接下来,还是从创建会话、创建节点、读取数据、更新数据、删除节点等方面来介绍如何

前言

接下来,还是从创建会话、创建节点、读取数据、更新数据、删除节点等方面来介绍如何使用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 {
    
    public static void main(String[] args) {
        
        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 {
    
    public static void main(String[] args) {
        
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 创建节点
        
        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 {
    
    public static void main(String[] args) {
        
        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 {
    
    public static void main(String[] args) throws InterruptedException {
        
        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() {
            
            @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 {
    
    public static void main(String[] args) throws InterruptedException {
        
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("会话被创建了...");
        // 创建节点
        
        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() {
            
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(s + ":该节点内容被更新,更新后的内容:" + o);
            }
            
            @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内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: ZookeeperZkClient使用介绍

本文链接: https://lsjlt.com/news/166703.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ZookeeperZkClient使用介绍
    目录前言1、创建会话2、创建节点3、删除节点4、获取子节点5、获取数据(节点是否存在、更新、删除)前言 接下来,还是从创建会话、创建节点、读取数据、更新数据、删除节点等方面来介绍如何...
    99+
    2024-04-02
  • mysqldump使用介绍
    1,备份单个数据库的结构和数据mysqldump -uroot -p123456 test1 > /root/test1.sql2,还原单个数据库的结构和数据方法1:使用mysql命令mysql -u...
    99+
    2024-04-02
  • GoLangchannel使用介绍
    目录停止信号任务定时解耦生产方和消费方控制并发数停止信号 channel 用于停止信号的场景还是挺多的,经常是关闭某个 channel 或者向 channel 发送一个元素,使得接收...
    99+
    2024-04-02
  • puppet介绍、使用
    Puppet是一个自动化配置管理工具,可以帮助管理和部署大规模的计算机系统和网络设备。它允许用户通过定义所需的系统状态和配置,然后自...
    99+
    2023-09-23
    puppet
  • MinIO介绍使用
    MinIO介绍使用 MinIO 介绍 MinIO 是一款基于Go语言发开的高性能、分布式的对象存储系统。客户端支持Java,Net,Python,Javacript, Golang语言。 MinIO 英文官网 MinIO 中文官网 注意:中...
    99+
    2023-09-02
    docker linux java
  • PreferenceActivity使用介绍
    PreferenceActivity是Android中的一个界面组件,用于展示和编辑应用程序的设置选项。它继承自Activity,并...
    99+
    2023-09-14
    使用
  • SpringBeanDefinition使用介绍
    目录1. 前言2. BeanDefinition2.1 AttributeAccessor2.2 BeanMetadataElement2.3 BeanDefinition2.4 A...
    99+
    2023-01-04
    Spring BeanDefinition作用 Spring BeanDefinition
  • JS.findElementById()使用介绍
    复制代码 代码如下: his.findElementById = function (identifier, frame) { if (!frame) { frame = windo...
    99+
    2022-11-15
    findElementById
  • Android WorkManager使用介绍
    一、引言   WorkManager 是google提供的异步执行任务的管理框架,是 Android Jetpack 的一部分,会根据手机的API版本和应用程序的状态来选择适当的方式执行任务。   在...
    99+
    2023-09-07
    android
  • Apache介绍及使用
    Apache的介绍 Apache全称:Apache HTTPD Server ;是Apache基金会的一个开源网页服务器,可以在大多数计算机操作系统中运行。Apache提供的服务器又称为:补丁服务器 ...
    99+
    2023-09-17
    apache php 服务器
  • VuePostCSS的使用介绍
    目录PostCSS使用安装依赖运行使用第三方插件autoprefixer使用第三方插件postcss-preset-env使用第三方插件postcss-pxtorem运行的新方式Po...
    99+
    2023-02-06
    Vue PostCSS Vue PostCSS的使用
  • ehcache 3.* 使用介绍
    官网地址:http://×××w.ehcache.org/documentation/3.6/getting-started.html    根据官网的说明使用起来非常简单,尤其是在3.0之后, 不管事xml配置文件还是链式编码配置。先看示...
    99+
    2023-01-31
    ehcache
  • Zookeeper Curator使用介绍
    目录1、添加依赖2、创建会话3、创建节点4、删除节点5、获取数据6、更新数据从编码风格上来讲,curator提供了基于Fluent的编程风格支持 1、添加依赖 在pom.xml文件中...
    99+
    2024-04-02
  • Android ViewBinding使用介绍
    目录一、kotlin-android-extensions二、ViewBinding使用1.gradle配置2.在Activity 使用3.在Fragment使用4.在Adapter...
    99+
    2024-04-02
  • fastjson2 介绍及使用
    目录 前言一、导入fastjson2依赖二、json对象与json数组的创建json对象创建json数组创建 三、json对象取值与json数组遍历取值json对象取值json数组遍历取值 四、json对象与字符串的转换js...
    99+
    2023-08-18
    java fastjson2 fastjson fastJson
  • SVN介绍和使用
    文章目录 SVN的介绍SVN是什么作用 安装包下载SVN的使用检出提交显示日志更新 patch的使用创建使用 SVN的介绍 SVN是什么 SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分...
    99+
    2023-08-19
    svn
  • jQuery cdn使用介绍
    jQuery是一个快速、小巧、功能丰富的JavaScript库。使用jQuery可以简化HTML文档的遍历、事件处理、动画等操作。j...
    99+
    2023-08-17
    jQuery
  • Python中itertools简介使用介绍
    目录Python中itertools模块一、 简介二、 使用介绍1、 常用迭代器1.1 chain1.2 groupby2、 无穷迭代器2.1 count2.2 cycle2.3 r...
    99+
    2022-12-28
    Python中itertools Python itertools详解 Python itertools
  • Android View Binding使用介绍
    前言 Android Studio稳定版发布了3.6版本,带来了一些新变化:首先外观,启动页变了,logo改了,更显现代化;增加Multi Pr...
    99+
    2022-06-06
    view Android
  • JDBC的介绍与使用
    1. JDBC的介绍   jdbc为java开发者使用数据库提供了统一的编程接口,它由一组java类和接口组成。  访问数据库的流程  在连接这一过程中,一般初学者是MySQL和java在同一个电脑上,建立...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作