`

监听zookeeper事件变化

阅读更多
虽然自己实现了客户端监听zk节点变化,今天发现有现成的工具,着实不赖,记录一下。呵呵!
如何使用Cruator监听zookeeper事件变化
package curator;

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.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;

public class CuratorWatch {

	static CuratorFramework zkclient = null;
	static String nameSpace = "wasu";// 根节点
	static {

		String zkhost = "127.0.0.1:2181";// zk的host
		RetryPolicy rp = new ExponentialBackoffRetry(1000, 3);// 重试机制
		Builder builder = CuratorFrameworkFactory.builder().connectString(zkhost).connectionTimeoutMs(5000).sessionTimeoutMs(5000).retryPolicy(rp);
		builder.namespace(nameSpace);
		CuratorFramework zclient = builder.build();
		zkclient = zclient;
		zkclient.start();// 放在这前面执行
		zkclient.newNamespaceAwareEnsurePath(nameSpace);

	}

	public static void main(String[] args) throws Exception {

		watch();
		Thread.sleep(Long.MAX_VALUE);

	}

	/**
	 * 
	 * 监听节点变化
	 * 
	 * */
	public static void watch() throws Exception {
		PathChildrenCache cache = new PathChildrenCache(zkclient, "/rmi", false);
		cache.start();

		System.out.println("监听开始/zk........");
		PathChildrenCacheListener plis = new PathChildrenCacheListener() {

			@Override
			public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
				switch (event.getType()) {
				case CHILD_ADDED: {
					System.out.println("Node added: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
					break;
				}

				case CHILD_UPDATED: {
					System.out.println("Node changed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
					break;
				}

				case CHILD_REMOVED: {
					System.out.println("Node removed: " + ZKPaths.getNodeFromPath(event.getData().getPath()));
					break;
				}
				}

			}
		};
		// 注册监听
		cache.getListenable().addListener(plis);

	}
}


执行命令窗口截图:

事件监听效果截图:


如何使用Curator操作zookeeper
ZooKeeper系列之二:Zookeeper常用命令
  • 大小: 39.8 KB
  • 大小: 49.2 KB
分享到:
评论

相关推荐

    zookeeper节点数据的监听与读写操作

    **监听Zookeeper节点变化** Zookeeper的一大特性就是支持事件监听。我们可以通过注册Watcher对象来监听节点的变化,例如数据的修改或者节点的创建、删除等。当发生这些事件时,Watcher的`process()`方法会被调用。...

    zookeeper 使用 Curator 示例监听、分布式锁

    Curator 提供了事件监听器,可以注册到 ZooKeeper 路径上,当该路径下发生创建、删除、数据改变等事件时,监听器会被触发。这在分布式系统中非常有用,例如监控配置变化、节点状态变更等。 四、Curator 实现分布式...

    zookeeper-3.4.6_zookeeper_

    3. **事件通知**:Zookeeper提供watcher机制,允许客户端设置监听某个节点的变化,当节点状态发生变化时,Zookeeper会立即通知相关客户端,实现快速响应。 4. **会话管理**:Zookeeper维护客户端的会话状态,如果...

    zookeeper监听器原理的详解

    在Zookeeper中,监听器(Listener)机制是其非常重要的一个特性,它允许用户监听某个数据节点的变化,并且能够在数据变化的时候得到通知。本文将会深入解析Zookeeper监听器的工作原理,以及如何利用监听器来监控数据...

    viper配置框架的介绍支持zookeeper的读取和监听

    不仅如此,Viper还支持读取环境变量、监听配置文件变动、从远程配置系统(如etcd和Consul)获取配置,并能响应这些配置的实时变化。然而,尽管Viper功能丰富,但它并不直接支持从Zookeeper中读取和监听配置。 ...

    zookeeper-watcher- 简单例子

    为了更好地理解Watcher的使用,下面我们将通过一个简单的Java程序来创建一个Watcher并监听Zookeeper上的数据节点。 首先,我们需要在`pom.xml`中引入Zookeeper的依赖: ```xml <groupId>org.apache.zookeeper ...

    zookeeper整理文档

    4. **客户端感知**:Web客户端通过监听Zookeeper节点的变化来实时更新总服务器的信息。 **具体实现步骤**如下: - 搜索引擎服务器在Zookeeper中创建临时节点,并存储自己的主机名。 - 总服务器获取这些临时节点的...

    【Zookeeper管理工具】

    2. **Watcher**: Watcher是Zookeeper的事件监听机制,可以设置对特定Znode的监听,当该节点状态发生变化时,Watcher会接收到通知。 3. **会话(Session)**: 用户与Zookeeper服务器之间的连接称为会话,会话期间,...

    5、zookeeper的java -Curator(服务注册与发现)

    4. 服务缓存:为了提高效率,`ServiceCache`可以缓存特定服务的实例列表,监听Zookeeper的变化并保持最新。启动`ServiceCache`并调用`getInstance()`或`getAllInstances()`获取服务实例。 Curator的`ServiceCache`...

    zookeeper测试小程序

    7. 监听器注册:设置监听器来监听ZNode的变化,当ZNode的数据、子节点或权限发生改变时,客户端会收到通知。 8. 会话事件处理:处理会话相关的事件,如会话创建、会话丢失或重新建立。 通过运行ZKtest,我们可以...

    zookeeper 3.8.4

    - **Watcher 事件监听**:Zookeeper 支持 Watcher 机制,允许客户端注册监听特定节点的变化,当节点发生变化时,Zookeeper 会触发回调通知客户端。 ### 2. ZooKeeper 的功能 - **命名服务**:为分布式组件提供唯一...

    zookeeper 3.6.3 源码下载

    3. **Watcher**:ZooKeeper提供了一种事件监听机制,称为Watcher,允许客户端注册对特定ZNode的兴趣,当ZNode状态发生变化时,ZooKeeper会通知相应的客户端。 **ZooKeeper的工作原理** 1. **主备选举(Leader ...

    zookeeper-3.8.0安装包下载

    Watcher 是一种事件监听机制,可以注册在 Znode 上,当 Znode 发生变化时,Watcher 将接收到通知。 在 Zookeeper-3.8.0 中,主要包含以下组件和目录: 1. bin:包含了启动和停止 Zookeeper 服务的脚本,如 zk...

    zookeeper连接工具

    - **watcher事件**: 客户端注册在特定Znode上的监听器,当Znode有变化时,Zookeeper会触发事件通知给客户端。 2. **Zookeeper操作** - **创建节点(create)**: 创建新的Znode,并可以设置数据、权限和是否持久化...

    zookeeper实现服务节点HA主备自动切换,1主多从模式、ZooKeeper实现高可用

    通过监听ZooKeeper上的节点变化,我们可以实现对服务状态变化的响应,例如,当新主节点选举成功后,可以触发相应的回调函数,更新服务列表或者重新分配任务。 总结起来,ZooKeeper通过其强大的一致性保证和选举机制...

    apache-zookeeper-3.5.6-bin.tar

    ZooKeeper 提供了Watcher机制,可以注册监听事件,当特定节点的状态发生变化时,会触发回调通知。 在部署 ZooKeeper 时,通常采用集群模式,由多个服务器节点组成,称为 Ensemble。每个节点都是平等的,能够互相...

    zookeeper测试程序c++

    // 在这里处理节点变化事件 } // 添加监听器 zoo_add_listener(zh, watcher_func, NULL); ``` 3. 获取指定节点信息:使用 `zoo_aexists` 或 `zoo_aget` 可以获取节点的状态和数据。例如,获取节点数据: ```cpp ...

    ZooKeeper 客户端的使用(二).

    Watch 是 ZooKeeper 的一个重要特性,它允许客户端设置监听器(Watch)在特定 ZNode 上,当该 ZNode 发生改变(如数据更新、被删除或子节点变更)时,ZooKeeper 会向客户端发送一个事件通知。然而,Watch 是一次性...

    使用ZooKeeper实现软负载均衡示例

    2. **服务发现**:服务消费者通过监听ZooKeeper上的特定路径,一旦有新的服务提供者节点创建或删除,ZooKeeper会发送事件通知。服务消费者根据接收到的事件,更新本地的服务提供者列表。 3. **负载均衡策略**:服务...

    zookeeper限制ip版

    - **配置动态加载**:考虑到配置的动态更新,可以监听配置文件的变化,实时刷新IP黑白名单列表。 - **性能优化**:为了避免频繁的文件读取影响性能,可以采用缓存策略,如使用ConcurrentHashMap存储已读取的IP规则...

Global site tag (gtag.js) - Google Analytics