ZooKeeper 客户端编程

Posted jonban

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZooKeeper 客户端编程相关的知识,希望对你有一定的参考价值。

 

1、准备,搭建ZooKeeper 集群

参考 https://www.cnblogs.com/jonban/p/zookeeper.html

 

2、新建 Maven 项目 zookeeper-client

 

3、pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
        http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.java.zookeeper</groupId>
    <artifactId>zookeeper-client</artifactId>
    <version>1.0.0</version>


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


        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

 

4、ZookeeperClientTest.java

package com.java.zookeeper;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.junit.Test;

/**
 * zookeeper 客户端测试
 * 
 * @author Logan
 * @createDate 2019-05-02
 * @version 1.0.0
 *
 */
public class ZookeeperClientTest {

    private static final String connectString = "s1:2181,s2181,s3:2181";

    @Test
    public void create() {
        try {
            ZooKeeper zk = new ZooKeeper(connectString, 2000, null);
            String result = zk.create("/test", "zookeeper client test root path".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println(result);

            result = zk.create("/test/node", "Hello zookeeper".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            System.out.println(result);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void get() {
        try {
            ZooKeeper zk = new ZooKeeper(connectString, 2000, null);

            // Stat stat = new Stat();
            // stat.setVersion(0);

            /* 下面是Stat 属性说明,<a href=‘https://zookeeper.apache.org/doc/r3.4.14/zookeeperProgrammers.html‘>官网参考地址 </a> */
            // ZooKeeper Stat Structure
            // The Stat structure for each znode in ZooKeeper is made up of the following fields:

            // czxid The zxid of the change that caused this znode to be created.
            // mzxid The zxid of the change that last modified this znode.
            // pzxid The zxid of the change that last modified children of this znode.
            // ctime The time in milliseconds from epoch when this znode was created.
            // mtime The time in milliseconds from epoch when this znode was last modified.
            // version The number of changes to the data of this znode.
            // cversion The number of changes to the children of this znode.
            // aversion The number of changes to the ACL of this znode.
            // ephemeralOwner The session id of the owner of this znode if the znode is an ephemeral node. If it is not an ephemeral node, it will be zero.
            // dataLength The length of the data field of this znode.
            // numChildren The number of children of this znode.
            byte[] data = zk.getData("/test", null, null);
            System.out.println(new String(data));

            data = zk.getData("/test/node", null, null);
            System.out.println(new String(data));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    public void deletePath() {
        try {
            ZooKeeper zk = new ZooKeeper(connectString, 2000, null);

            // 节点实际版本号,如果没有对应版本,删除会抛出异常
            int dataVersion = 0;
            zk.delete("/test/node", dataVersion);
            zk.delete("/test", dataVersion);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 

可按顺序进行测试

 

 

ZooKeeper 客户端编程

.

以上是关于ZooKeeper 客户端编程的主要内容,如果未能解决你的问题,请参考以下文章

4 kafka集群部署及生产者java客户端编程 + kafka消费者java客户端编程

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

zookeeper java客户端之curator详解

基于ZooKeeper的Dubbo注册中心

python操作zookeeper