【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");
    }
相关推荐
Kismet_nvi1 小时前
《Kubernetes Service 进阶、kube-proxy 与 Ingress 实战精要》
云原生·容器·kubernetes
SLD_Allen5 小时前
HxApisix 云原生 API 网关的架构设计与 AI 集成实践(THS)
人工智能·网关·云原生·apisix
云烟成雨TD6 小时前
Micrometer 系列【39】链路追踪:入门案例 | 环境准备
java·云原生·链路追踪
运维行者_7 小时前
企业带宽监控工具实战:网络流量分析与异常排查的5个关键能力
运维·服务器·开发语言·网络·分布式·后端·php
掉鱼的猫7 小时前
Solon AOT & Native:三段式编译,从 Java 到原生可执行文件
java·云原生
jeffwang8 小时前
我把同一个压测做错了三次,第四次才发现真正的瓶颈
分布式·性能优化·rust
Blossom i9 小时前
分布式编程实验二:Flink安装与编程实践(头歌云客)
大数据·分布式·flink
ai_coder_ai9 小时前
事件驱动架构(EDA)在分布式业务系统中的应用
分布式·架构
蓝胖的四次元口袋11 小时前
分布式知识梳理(4)
分布式