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 的业务之间的隔
离

浙公网安备 33010602011771号