【Zookeeper】zk_客户端API_创建节点

客户端API操作

前提:保证服务器上zk集群服务端启动

配置maven依赖

复制代码
   <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>RELEASE</version>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>

    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>3.4.6</version>
    </dependency>
</dependencies>

拷贝log4j.properties文件到项目根目录

在项目的src/main/resources目录下,新建一个文件,命名为log4j.properties,在文件中填入

复制代码
log4j.rootLogger=INFO, stdout   
log4j.appender.stdout=org.apache.log4j.ConsoleAppender   
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout   
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n   
log4j.appender.logfile=org.apache.log4j.FileAppender   
log4j.appender.logfile.File=target/spring.log   
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout   
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] 

创建zookeeper客户端

复制代码
package com.baidu.zk;

import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Test;

public class zkClient {

    @Test
    public void init()throws Exception{

        ZooKeeper zooKeeper = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 100, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {

            }
        });
    }
}

创建子节点

复制代码
package com.baidu.zk;
import org.apache.zookeeper.*;
import org.junit.Before;
import org.junit.Test;
public class zkClient {
    private ZooKeeper zkClient;
    @Before
    public void init()throws Exception{

        zkClient = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 30000, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {

            }
        });
    }

    @Test
    public void create() throws KeeperException, InterruptedException {

        String nodeCreated = zkClient.create("/sg", "zgl".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);


    }
}

获取子节点并监听节点变化

复制代码
   @Test
    public void getChildren() throws Exception{

        List<String> children = zkClient.getChildren("/", true);
        for (String child : children) {
            System.out.println(child);
        }
    }

让程序不结束:

复制代码
     @Test
    public void getChildren() throws Exception {
        List<String> children = zkClient.getChildren("/", true);
        for (String child : children) {
            System.out.println(child);
        }
        Thread.sleep(Long.MAX_VALUE);
    }

  private ZooKeeper zkClient;
    @Before
    public void init() throws Exception {
        zkClient = new ZooKeeper("master:2181,slave1:2181,slave2:2181", 5000, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                System.out.println("---------------------------");
                try {
                    List<String> children = zkClient.getChildren("/", true);
                    for (String child : children) {
                        System.out.println(child);
                    }
                    System.out.println("---------------------------");
                } catch (KeeperException e) {
                    e.printStackTrace();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        Thread.sleep(10000);
    }

判断Znode是否存在

复制代码
    @Test
    public void exist() throws Exception{
        Stat stat = zkClient.exists("/sanguo", false);

        System.out.println(stat == null ? "not exist" : "exist");
    }
相关推荐
我是一颗柠檬1 小时前
【Java项目技术亮点】分库分表+数据路由策略:单表5000万后的架构升级方案
java·开发语言·分布式·架构
半夜修仙2 小时前
RabbitMQ中如何保证消息的可靠性传输
java·分布式·中间件·rabbitmq·github·java-rabbitmq
星辰徐哥4 小时前
云原生核心特性:容器化、微服务与DevOps的通俗解读
微服务·云原生·devops
武子康4 小时前
调查研究-167 Docker Compose 详解:从单容器到多服务编排的工程化入口
运维·docker·云原生·容器·kubernetes·k8s·docker-compose
小二·4 小时前
Redis 7 分布式缓存架构实战
redis·分布式·缓存
zhuhai_xigedian4 小时前
源网荷储一体化 vs 传统供用电模式:差异、优势与转型路径
大数据·人工智能·分布式·系统架构·能源
heimeiyingwang5 小时前
【架构实战】分布式会话:从Session到JWT的演进
微服务·云原生·架构
凯源智能6 小时前
屋顶分布式光伏箱变远程测控实战:宝鸡法士特项目高效交付解析
分布式
Amy187021118237 小时前
东南亚智慧物流园区的“隐形守护者”:有源滤波柜如何驯服变频器5/7次谐波
分布式·能源
DolphinScheduler社区8 小时前
Apache DolphinScheduler 3.4.2 正式发布!新增 Amazon EMR Serverless 插件,增强监控与补数据能力
大数据·云原生·serverless·apache·海豚调度·版本发版