zoukankan      html  css  js  c++  java
  • ZooKeeper-API CURD

    ZooKeeper Java API

    pom.xml 依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>root</artifactId>
            <groupId>jhxxb</groupId>
            <version>1.0-SNAPSHOT</version>
            <relativePath>../root/pom.xml</relativePath>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>zookeeper</artifactId>
    
        <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>
            <plugins>
                <!-- 指定jdk -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>

    测试代码

    public class ZooKeeperTest {
        // 集群地址
        // private String connectString = "192.168.8.138:2181,192.168.8.136:2181,192.168.8.140:2181";
        private String connectString = "127.0.0.1:2181";
        private int sessionTimeout = 5000;
        private ZooKeeper zk;
    
        @Before
        public void init() throws IOException {
            BasicConfigurator.configure();
            zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
                @Override
                public void process(WatchedEvent event) {
    
                }
            });
        }
    
        @After
        public void close() throws InterruptedException {
            zk.close();
        }
    
        @Test
        public void create() throws KeeperException, InterruptedException {
            // 创建节点
            System.out.println(zk.create("/zhongguo", "hubei".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));
        }
    
        @Test
        public void getChildren() throws KeeperException, InterruptedException {
            // 获取节点
            System.out.println(zk.getChildren("/", false));
        }
    
        @Test
        public void getData() throws KeeperException, InterruptedException {
            // 获取节点数据
            System.out.println(new String(zk.getData("/zhongguo", false, zk.exists("/zhongguo", false))));
        }
    
        @Test
        public void exists() throws KeeperException, InterruptedException {
            // 判断节点是否存在
            Stat stat = zk.exists("/zhongguo", false);
            System.out.println(stat == null ? "not exist" : "exist");
        }
    
        @Test
        public void setData() throws KeeperException, InterruptedException {
            // 修改子目录节点数据
            System.out.println(zk.setData("/zhongguo", "beijing".getBytes(), -1));
        }
    
        @Test
        public void delete() throws Exception {
            // 删除空节点目录
            //zk.delete("/zhongguo", -1);
            // 删除父节点目录
            rmr("/dubbo");
        }
    
        /**
         * 递归删除,zookeeper 只允许删除叶子节点(空节点)
         */
        public void rmr(String path) throws Exception {
            // 获取路径下的节点
            List<String> children = zk.getChildren(path, false);
            for (String pathCd : children) {
                // 获取父节点下面的子节点路径
                String newPath = "";
                // 递归调用,判断是否是根节点
                if (path.equals("/")) {
                    newPath = "/" + pathCd;
                } else {
                    newPath = path + "/" + pathCd;
                }
                rmr(newPath);
            }
            // 删除节点,并过滤 zookeeper 节点和 / 节点
            if (path != null && !path.trim().startsWith("/zookeeper") && !path.trim().equals("/")) {
                zk.delete(path, -1);
                // 打印删除的节点路径
                System.out.println("删除节点:" + path);
            }
        }
    }

    http://zookeeper.apache.org/doc/r3.4.14/api/index.html

  • 相关阅读:
    Android中fragment之间和Activity的传值、切换
    javascript--经典实例锦集
    Android中ListView动态加载数据
    Android开发之调用系统图库及相机
    Android 相机开发详解
    RTSP实例解析
    【Android UI设计与开发】第18期:滑动菜单栏(三)SlidingMenu动画效果的实现
    js 第二小步
    JavaScript初步+基本函数
    javaweb实战开始
  • 原文地址:https://www.cnblogs.com/jhxxb/p/10759618.html
Copyright © 2011-2022 走看看