zoukankan      html  css  js  c++  java
  • zookeeper增删改查节点操作

    java 与zk 增删改查的演示例
    pom.xml
    <dependency>
        <groupId>org.apache.curator</groupId>
        <artifactId>curator-framework</artifactId>
        <version>4.0.0</version>
    </dependency>
    这个是基于curator客户端对zookeeper的增删改查操作
    /**
     * zookeeper 节点的新增,修改,删除
     * Date:2019/8/17
     * Author:gyc
     * Desc:
     */
    public class ZookeeperHello {
    
        public static final String CONNECT_STR = "192.168.3.14:2181";
    
        public  CuratorFramework curatorFramework = null;
    
        @Before
        public  void before() {
            CuratorFramework tmpCuratorFramework = CuratorFrameworkFactory.builder()
                    .connectString(CONNECT_STR).sessionTimeoutMs(1000).retryPolicy(new ExponentialBackoffRetry(1000, 1))
                    .namespace("curator")
                    .build();
            tmpCuratorFramework.start();
            this.curatorFramework = tmpCuratorFramework;
                tmpCuratorFramework.start();
                this.curatorFramework = tmpCuratorFramework;
        
        }
    
        /**
         * 创建一个永久的节点
         * @throws Exception
         */
        @Test
        public   void createNode() throws Exception {
             curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT)
                    .forPath("/newNode","text".getBytes());
        }
    
    
        /**
         * 修改一个节点
         */
        @Test
        public  void udpateNode() throws Exception {
            curatorFramework.setData().forPath("/newNode","value".getBytes());
        }
    
    
        /**
         * 获取一个节点信息
         */
        @Test
        public  void getNodeData() throws Exception {
            byte[] bytes = curatorFramework.getData().forPath("/newNode");
    
            String value = new String(bytes);
            System.out.println(value);
        }
    
    
        /**
         * 删除节点
         * @throws Exception
         */
        @Test
        public  void deleteNode() throws Exception {
            curatorFramework.delete().forPath("/newNode");
    
        }
    
    
        /**
         * 测试一个节点是否存在
    
         * @throws Exception
         */
        @Test
        public  void checkNodeExist() throws Exception {
            Stat stat = curatorFramework.checkExists().forPath("/newNode"); //stat 返回空代表不存在
            System.out.println(stat);
        }
    
    
        /**
         * 创建一个临时节点
         */
        @Test
        public  void createTempNode() throws Exception {
            curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/tmpNode","tmpNode".getBytes());
        }
    
    }
    

      

    解析一下:
    CuratorFramework tmpCuratorFramework = CuratorFrameworkFactory.builder()
    .connectString(CONNECT_STR).sessionTimeoutMs(1000).retryPolicy(new ExponentialBackoffRetry(1000, 1))
    .namespace("curator")
    .build();
     
    重试策略:Curator 内部实现的几种重试策略:
    • ExponentialBackoffRetry:重试指定的次数, 且每一次重试之
    间停顿的时间逐渐增加.
    • RetryNTimes:指定最大重试次数的重试策略
    • RetryOneTime:仅重试一次
    • RetryUntilElapsed:一直重试直到达到规定的时间
     
    namespace: 值得注意的是 session2 会话含有隔离命名空间,即
    客户端对 Zookeeper 上数据节点的任何操作都是相对/curator
    目录进行的,这有利于实现不同的 Zookeeper 的业务之间的隔
     
     
  • 相关阅读:
    [算法] 堆栈
    [刷题] PTA 02-线性结构3 Reversing Linked List
    java IO流 (八) RandomAccessFile的使用
    java IO流 (七) 对象流的使用
    java IO流 (六) 其它的流的使用
    java IO流 (五) 转换流的使用 以及编码集
    java IO流 (四) 缓冲流的使用
    java IO流 (三) 节点流(或文件流)
    java IO流 (二) IO流概述
    java IO流 (一) File类的使用
  • 原文地址:https://www.cnblogs.com/dabenxiang/p/11392550.html
Copyright © 2011-2022 走看看