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 的业务之间的隔
 
 
原文地址:https://www.cnblogs.com/dabenxiang/p/11392550.html