20190901 笔记
Zookeeper API
添加zk依赖
这个写法是为了 优雅的连接 zk, 当连接上是
countdownlatch -1, 为0
当连接状态为 connected, 才往下走
创建临时节点:
String zknode = zk.create("/zk-test-eph", "1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
logger.warn("创建节点: {}", zknode);
Thread.sleep(10000);
// 异步创建节点
String ctx = "{'create': 'success'}";
zk.create("/zk-test/eph", "1".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
CreateMode.EPHEMERAL,
new AsyncCallback.StringCallback() {
@Override
public void processResult(int i, String path, Object ctx, String name) {
logger.warn("创建节点成功: {}",name);
}
}, ctx);
set操作
Stat stat = zk.setData("/test0901", "data002".getBytes(),-1);
logger.warn("version: {}", ((Stat) stat).getVersion());
删除操作
zk.delete("/test0901", -1);
获取节点数据
Stat stat = new Stat();
byte[] data = zk.getData("/zookeeper", true, stat);
logger.warn("获取节点数据: {}", new String(data));
logger.warn("节点版本号: {}", stat.getVersion());
判断节点是否存在
Stat stat = zk.exists("/zookeeper", true);
if(null != stat){
logger.warn("节点存在");
}else{
logger.warn("节点不存在");
}
获取子节点
List<String> children = zk.getChildren("/zookeeper", true);
for(String child: children){
logger.warn(child);
}