Zookeeper Client基础操作和Java调用
## Zookeeper
> Zookeeper目前用来做数据同步,再各个服务之前同步关键信息
i.客户端操作
1. 创建
create [-s] [-e] path data acl
-s 为顺序节点 -e 为临时节点(临时节点在会话消失后即消失)
acl为权限控制,权限控制比较麻烦,而且只存在于此节点和此级,其子节点不受控制
2. 读取
ls :
ls path
列出此节点下的所有子节点
get:
get path
获取此节点的内容和属性
3. 更新
set path data [version]
version为可选,选择基于哪个版本更新
4. 删除
delete path [version]
5. 权限
在Zookeeper的那本书的第215页有详细介绍
这里使用的是digest加密方式,使用Zookeeper提供的方法加密
ii. Java客户端操作
代码地址: ZKService.java
1. 初始化客户端
```java
private CuratorFramework client = CuratorFrameworkFactory.builder()
.connectString(ZOOKEEPER的IP)
.retryPolicy(new ExponentialBackoffRetry(1000, 6))
.sessionTimeoutMs(5000)
.namespace(以哪个地址为基准)
.authorization(加密方式, 密码)
.build();
```
2. 注册监听
```java
private void watch(String path) {
ExecutorService tp = Executors.newFixedThreadPool(2);
System.out.println(Thread.currentThread().getName());
PathChildrenCache cache = new PathChildrenCache(这里把初始化的客户端传进来, 这里传入监听的地址, true, false, tp);
try {
cache.start(PathChildrenCache.StartMode.NORMAL);
} catch (Exception e) {
e.printStackTrace();
}
cache.getListenable().addListener(new PathChildrenCacheListener() {
public void childEvent(CuratorFramework client,
PathChildrenCacheEvent event) throws Exception {
switch (event.getType()) {
case CHILD_ADDED://这里三个switch分别对应三个操作,里面写实现的业务逻辑
listenService.initUser(new String(event.getData()));event.getData()是获取数据
break;
case CHILD_UPDATED:
break;
case CHILD_REMOVED:
break;
default:
break;
}
}
});
}
```
3. 创建
```
String path = "自定义";
try {
client.getClient().create()
.withMode(CreateMode.PERSISTENT_SEQUENTIAL)//这个是顺序持久节点(自动按照顺序给节点前加数字),SEQUENTIAL是单纯的持久节点
.forPath(这里传地址, "这里传数据");
} catch (Exception e) {
e.printStackTrace();
}
```
最新文章
- 关于Docker目录挂载的总结
- java gc的考察
- Symbol ES6 新增的一种值类型数据,表示一种绝不重复的值
- (转载)String.IsNullorEmpty()方法的使用
- MongoDB安装并设置为windows服务以使其开机自启
- 如何把bootstrap用webpack打包
- myeclipse安装
- Struts1与Struts2的异同
- Eclipse 在线汉化
- 吐槽下CSDN编辑器
- protobuf使用错误总结
- JavaScript 高级程序设计(第3版)笔记——chapter5:引用类型
- 设计模式学习之“观察者模式” [C#]
- bootstrap-wysihtml5设置值
- smartClient 1--框架介绍
- Windows10 环境下安装 ElasticSearch
- 移动App设计的十条建议
- svn提交按钮灰选
- Symfony中Doctrine对应的Mongodb数据类型 data type
- JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程
热门文章
- PAT 甲级 1027 Colors in Mars (20 分)
- vm虚拟机 模板机进行克隆导致centos 7.2 无法加载网卡
- WebHttpRequest在sharepoint文档库中的使用
- mysql B+tree
- python 的序列化和反序列化
- Servlet工作原理解析
- 转载:oracle 启动过程--oracle深入研究
- python+appium-desktop:安卓(android)7.0以上使用appium无法定位元素(无法refresh)且 无法运行脚本
- Python介绍与安装
- toString() 数组转字符串