Zookeeper编程客户端
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Zookeeper编程客户端,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2480字,纯文字阅读大概需要4分钟。
内容图文
![Zookeeper编程客户端](/upload/InfoBanner/zyjiaocheng/644/d06614e42c6040c58a82c70d15eb4da6.jpg)
Zookeeper服务器有三种Java客户端;
Zookeeper: Zookeeper官方提供的原生java客户端;
Zkclient: 在原生zookeeper基础上进行扩展的开源第三方Java客户端;
Curator:Netflix公司在原生zookeeper基础上开源的Java客户端;
1.Curator编程客户端
API文档: https://zookeeper.apache.org/doc/current/api/index.html
主要API:
create: 创建结点;
delete: 删除结点;
exists: 判断结点是否存在;
get data: 读取结点数据;
set data: 写入结点数据;
get children: 获取结点的子结点;
public class CuratorClient01 {
private static final String ADDRESS = "192.168.6.128:2181";
private static final String ROOT_NODE = "/root/node";
public static void main(String[] args) {
// 设置重试策略,3次每次等待2秒
RetryPolicy retry = new RetryNTimes(3,2000);
CuratorFramework client = CuratorFrameworkFactory.newClient(ADDRESS, retry);
// 启动客户端
client.start();
// 拿到zookeeper状态
CuratorFrameworkState state = client.getState();
System.out.println(state);
}
}
持久化模式创建节点
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT)
.forPath(ROOT_NODE,"node helle data".getBytes());
修改节点信息
/**
*
* 2.更新节点信息必须指定节点的版本,-1表示任何版本都可以
*
*/
Stat stat = client.setData().withVersion(-1).forPath(ROOT_NODE, "node data change".getBytes());
System.out.println(stat.toString());
读取节点信息
// 读取状态数据
Stat stat = new Stat();
byte[] bytes = client.getData().storingStatIn(stat).forPath(ROOT_NODE);
// 数据
System.out.println(new String(bytes));
// 状态信息
System.out.println(stat.toString());
查询节点信息
List<String> list = client.getChildren().forPath("/root");
for (String s : list) {
System.out.println(s);
}
判断节点是否存在
Stat stat1 = client.checkExists().forPath("/root");
if(stat1 == null ){
System.out.println("节点不存在");
}
else{
System.out.println("节点存在");
}
删除节点
/**
* 子节点一起删除
*/
client.delete().deletingChildrenIfNeeded().forPath("/root");
监听节点
final NodeCache nodeCache = new NodeCache(client,ROOT_NODE);
// 是否拿到节点数据
nodeCache.start(true);
if(nodeCache.getCurrentData() != null){
byte[] data = nodeCache.getCurrentData().getData();
System.out.println(new String(data));
}
else{
System.out.println("没有拿到数据");
}
nodeCache.getListenable().addListener(new NodeCacheListener() {
public void nodeChanged() throws Exception {
System.out.println("监听到事件了:");
byte[] data = nodeCache.getCurrentData().getData();
System.out.println(new String(data));
System.out.println("节点数据:"+nodeCache.getPath());
}
});
内容总结
以上是互联网集市为您收集整理的Zookeeper编程客户端全部内容,希望文章能够帮你解决Zookeeper编程客户端所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。