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 的业务之间的隔
     
     
  • 相关阅读:
    缓存服务Ehcache方案
    sql的一点总结<一>
    消息队列-ActiveMQ
    Kettle数据抽取解决方案
    在VMware上安装VMTools
    数组去重方法
    横向tab计算滚动位置
    无高度内容垂直居中
    常见富文本处理方法
    极简触感反馈Button组件
  • 原文地址:https://www.cnblogs.com/dabenxiang/p/11392550.html
Copyright © 2011-2022 走看看