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();
}
```
Zookeeper Client基础操作和Java调用的更多相关文章
- zookeeper client 常用操作
#获取权限(类似于登陆) addauth digest admin-user:admin-password #查看权限 getAcl /collections/meixin_product/state ...
- [No000091]SVN学习笔记2-TortoiseSVN Client初级操作update(获取)、commit(提交)
SVN简介: 为什么要使用SVN? 程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversion是什么? ...
- zookeeper(三):java操作zookeeper
引入jar包 首先要使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 ...
- 【ZooKeeper系列】2.用Java实现ZooKeeper API的调用
温馨提示:在这里我再次提个小要求,希望大家能习惯看官方文档,文档虽然是英文但用词都比较简单,基本都能看懂文档表达的意思.授之以鱼不如授之以渔的道理相信大家都明白,也希望通过猿人谷的这个ZooKeepe ...
- 读Hadoop3.2源码,深入了解java调用HDFS的常用操作和HDFS原理
本文将通过一个演示工程来快速上手java调用HDFS的常见操作.接下来以创建文件为例,通过阅读HDFS的源码,一步步展开HDFS相关原理.理论知识的说明. 说明:本文档基于最新版本Hadoop3.2. ...
- Java调用Zookeeper
watch机制 Zookeeper watch是一种监听通知机制,可以随时监听一些数据的变化,从而实现数据的及时性. Zookeeper所有的读操作getData(), getChildren()和 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
- JAVA大数类—基础操作(加减乘除、取模、四舍五入、设置保留位数)
当基础数据类型长度无法满足需求时可以使用大数类 构造方法接受字符串为参数 BigInteger bInt = new BigInteger("123123"); BigDecima ...
- 原创】Java并发编程系列2:线程概念与基础操作
[原创]Java并发编程系列2:线程概念与基础操作 伟大的理想只有经过忘我的斗争和牺牲才能胜利实现. 本篇为[Dali王的技术博客]Java并发编程系列第二篇,讲讲有关线程的那些事儿.主要内容是如下这 ...
随机推荐
- go语言学习--go中的map切片
//定义一个结构 type Car struct { Brand string Age int } func Pluck() map[int][]Car { carMap := make(map[in ...
- springboot 的war包在Tomcat中启动失败
springboot 默认是通常是打包成jar的,里面会内置一个tomcat容器 有时候我们需要使用以前打成war包的方式部署到对应的tomcat中, 具体springboot 怎么从jar改成war ...
- 八(第二篇)、主体结构元素——nav元素、aside元素
nav元素 nav元素是一个可以用作页面导航的链接组,其中的导航元素链接到其他页面或当前页面的其他部分. 并不是所有的链接组都要被放进nav元素,只需要将主要的.基本的链接组放进nav元素即可. na ...
- dubbo文档
Srping版Dubbo集成中文地址: https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html Spring ...
- android 开发 Intent使用技巧点
判断Intent是否为null: if (intent.resolveActivity(getPackageManager())!=null) { //判断Intent是否为null // Inten ...
- 简单快捷使用Git
1.简介和安装Git是世界上目前最先进的分布式版本控制系统.安装:https://git-for-windows.github.io下载.设置姓名和email:git config --global ...
- Java入门到精通第4版汇总
- 学习node.js 第2篇 介绍node.js 安装
Node.js - 环境安装配置 如果愿意安装设置Node.js环境,需要计算机上提供以下两个软件: 一.文本编辑器 二.Node.js二进制安装包 文本编辑器 这将用来编写程序代码. 一些编辑器包括 ...
- Apache配置默认主页
Apache配置默认主页 进入Apache的conf目录 打开httpd.conf文件输入: 在文件末位添加: <Directory "F:/www_php/blog_com/my_b ...
- 手写注解实现SpringMVC
参考:https://www.cnblogs.com/Shock-W/p/6617068.html