## 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();
}
```

最新文章

  1. 关于Docker目录挂载的总结
  2. java gc的考察
  3. Symbol ES6 新增的一种值类型数据,表示一种绝不重复的值
  4. (转载)String.IsNullorEmpty()方法的使用
  5. MongoDB安装并设置为windows服务以使其开机自启
  6. 如何把bootstrap用webpack打包
  7. myeclipse安装
  8. Struts1与Struts2的异同
  9. Eclipse 在线汉化
  10. 吐槽下CSDN编辑器
  11. protobuf使用错误总结
  12. JavaScript 高级程序设计(第3版)笔记——chapter5:引用类型
  13. 设计模式学习之“观察者模式” [C#]
  14. bootstrap-wysihtml5设置值
  15. smartClient 1--框架介绍
  16. Windows10 环境下安装 ElasticSearch
  17. 移动App设计的十条建议
  18. svn提交按钮灰选
  19. Symfony中Doctrine对应的Mongodb数据类型 data type
  20. JDBC编程之预编译SQL与防注入式攻击以及PreparedStatement的使用教程

热门文章

  1. PAT 甲级 1027 Colors in Mars (20 分)
  2. vm虚拟机 模板机进行克隆导致centos 7.2 无法加载网卡
  3. WebHttpRequest在sharepoint文档库中的使用
  4. mysql B+tree
  5. python 的序列化和反序列化
  6. Servlet工作原理解析
  7. 转载:oracle 启动过程--oracle深入研究
  8. python+appium-desktop:安卓(android)7.0以上使用appium无法定位元素(无法refresh)且 无法运行脚本
  9. Python介绍与安装
  10. toString() 数组转字符串