zk监听java代码 java监听binlog

如何使用Curator监听zookeeper事件变化1 , 配置文件同步
2,主从切换
3,分布式队列
4,分布式锁
5,其他
在以前的文章里面有写过使用zookeeper原生的api,监听zk节点变化 , 那么本篇我们就来看下 , 如何使用curator来完成监听,代码如下:
pre name="code" class="java"package com.qin.curator.zk;
import javax.sound.midi.Patch;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.CuratorFrameworkFactory.Builder;
import org.apache.curator.framework.api.CuratorWatcher;
import org.apache.curator.framework.recipes.cache.NodeCache;
import org.apache.curator.framework.recipes.cache.NodeCacheListener;
import org.apache.curator.framework.recipes.cache.PathChildrenCache;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheEvent;
import org.apache.curator.framework.recipes.cache.PathChildrenCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.curator.utils.ZKPaths;
import org.apache.zookeeper.WatchedEvent;
/**
*
:2181";//zk的host
RetryPolicy rp=new E
【Zookeeper系列】ZK命令基本使用在了解 ZK 底层原理之前,咱们先简单了解常用的 ZK 命令 , 熟悉常用 ZK 命令有利于排查相关问题或了解基于 ZK 自研系统等场景 。比如在开发的时候,发现有些Dubbo服务无法被调用 , 这有可能是服务没有注册到ZK或者断开连接;也有可能公司有自研的系统使用 ZK 作为配置中心,熟悉 ZK 命令就能知道是如何做到服务发现注册和配置动态更新 。
话不多说,咱们先来了解常见的 ZK 命令吧!
实际上,ZK并没有help命令,你可以随意敲一两个字符也会这样显示,只不过基于使用Linux的习惯,姑且认为输入help能打印出ZK支持的命令吧 。
ls 命令可以查看指定目录下的节点,使用可选的参数,能够更加详细的看到节点的相关信息
stat / 等价于 ls -s /
和 ls 命令相似的,加上-w参数添加监听
在ZK 3.5版本之后,新增了容器和TTL节点,分别是使用-c 和 -t 创建 。所以读者们要注意你当前使用的版本,如果版本低于3.5的,是没有容器和TTL节点 。
特别说明一下容器节点和TTL节点的使用:
另外关于TTL节点 的使用 , 需要特别注意的是 , 如果使用默认的配置文件启动zk , 想创建有存活时间的节点 , 比如执行 create -t 10 /test 是会报 KeeperErrorCode = Unimplemented for XXX 这样的错误 。解决办法是需要在ZK启动前,先在配置文件加上 extendedTypesEnabled=true 然后重启ZK(集群部署的话,所有ZK都需要修改配置文件再重启)
配置后重启 , 执行 create -t 10 /test 这样的命令就不会报错啦
例子:get -s /demo
例子:先查询节点版本号,模拟并发下修改同一节点
get -s /demo 可知当前 dataVersion = 1
客户端1:set -v 1 /demo demo-data1
客户端2:set -v 1 /demo demo-data2
客户端1比客户端2先执行,客户端2再执行的话,这时显示报错
-v version:和 set 命令相似 , -v 参数用于判断当前操作的版本
例子:先创建一个delNode节点 , 然后删除
在前面使用create命令的时候 , 有一个acl参数是设置节点权限的,那么我们应该怎么设置?
举个例子: create /testAcl demo world:anyone:crwda
这行命令的意思是,创建 testAcl 这个节点,节点值为demo,其权限策略是所有人都可以执行 crwda 操作 。那么接下来,咱们先看下 ACL 是什么东东?

推荐阅读