`

zookeeper watch

 
阅读更多
zookeeper所有读操作(getData(),getChildren(),exists())具有设置watch的选项。
zookeeper watch的定义如下:watch事件是一次性触发器,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher。

需要注意三点:

1.一次性触发器
client在一个节点上设置watch,随后节点内容改变,client将获取事件。当节点内容再次改变,client不会获取这个事件,除非它又执行了一次读操作并设置watch

2.发送至client,watch事件延迟
watch事件异步发送至观察者。比如说client执行一次写操作,节点数据内容发生变化,操作返回后,而watch事件可能还在发往client的路上。这种情况下,zookeeper提供有序保证:client不会得知数据变化,直到它获取watch事件。网络延迟或其他因素可能导致不同client在不同时刻获取watch事件和操作返回值。

3.设置watch的数据内容
涉及到节点改变的不同方式。比方说zookeeper维护两个watch列表:节点的数据watch和子节点watch。getData()和exists()设置了内容watch,getChildren()设置了子节点watch,操作返回的数据类型不同,前者是节点的内容,后者是节点的子节点列表。setData()触发内容watch,create()触发当前节点的"内容watch"和其父节点的"子节点watch",delete()同时触发"内容watch"和"子节点watch"(其子节点被全部删除),以及其父节点的"子节点watch"。说白了,对当前节点的操作,要考虑到对其父节点与子节点的影响。

watch在客户端所连接的服务端本地维护。watch的设置、维护、分发操作都很轻量级。当客户端连接到新的服务端,watch将被任一会话事件触发。与服务端断开连接时,不能获取watch事件。客户端重连后,之前注册的watch将被重新注册并在需要时触发。通常这一切透明地发生,用户不会察觉到。有一种情况watch可能丢失:之前对一个尚未建立的节点的设置了exists watch,如果断开期间该节点被建立或删除,那么此watch将丢失。

对于watch,zookeeper提供以下保证:
1.watch对于其他事件、watch、异步响应是有序的。zookeeper client library保证有序分发
2.客户端监视一个节点,总是先获取watch事件,再发现节点的数据变化。
3.watch事件的顺序对应于zookeeper服务所见的数据更新的顺序。

关于watch要记住的是:
1.watch是一次性触发的,如果获取一个watch事件并希望得到新变化的通知,需要重新设置watch
2.watch是一次性触发的并且在获取watch事件和设置新watch事件之间有延迟,所以不能可靠的观察到节点的每一次变化。要认识到这一点。
3.watch object只触发一次,比如,一个watch object被注册到同一个节点的getData()和exists(),节点被删除,仅对应于exists()的watch ojbect被调用
4.若与服务端断开连接,直到重连后才能获取watch事件。
分享到:
评论

相关推荐

    zookeeper watch机制的理解

    ZooKeeper Watch机制的理解 在 ZooKeeper 中,Watch 机制是一种异步非阻塞的主动通知模式,用于实现分布式进程之间的实时高效的状态共享。Watch 机制是 ZooKeeper 的核心机制之一,它使得分布式进程之间的“共享...

    分布式协调工具-ZooKeeper实现动态负载均衡

    在某个消费者故障或者重启等情况下,其他消费者会感知到这一变化(通过 zookeeper watch消费者列表),然后重新进行负载均衡,保证所有的分区都有消费者进行消费。 命名服务(Naming Service) 命名服务也是分布式...

    zookeeper-watcher-demo:动物园管理员 wather 演示

    示例说明:zookeeper server端,client端每100毫秒写入数据,另一个client端watch节点数据变化 监听的结果是得到的数值是连续的、和数据生成端是一致的,并没有出现数值跳跃的情况。 结论:只要实现Watcher, ...

    zookeeper-3.4.6.rar

    ZooKeeper提供了多种watch事件,客户端可以设置对某个ZNode的watch,当ZNode的状态发生改变(如数据更新、删除或子节点变化)时,ZooKeeper会向设置watch的客户端发送通知,这样可以实现实时监控和快速响应。...

    zookeeper-3.4.14.zip

    选举过程通过Zookeeper的Watch机制实时监控节点状态变化,并快速响应。 3. **配置管理**:Kafka的配置信息,如主题的创建、删除、分区数量的调整等,都需要通过Zookeeper进行同步。当这些配置变更发生时,Zookeeper...

    ZooKeeper 客户端的使用(二).

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

    zookeeper3八本

    8. **Watch机制**:Watch是Zookeeper的一种事件监听机制,客户端可以为任何节点设置Watch,当该节点发生变化时,Zookeeper会向设置Watch的客户端发送通知,实现数据变更的实时同步。 9. **安全性**:Zookeeper支持...

    apache zookeeper使用方法实例详解

    DataMonitor 类使用 ZooKeeper 的 Watch 机制来监视 Znode 节点的数据,当 Znode 节点的数据发生变化时,DataMonitor 类会通知 Executor 类,并启动或停止可执行程序。 在 ZooKeeper 的应用程序设计中,开发人员...

    zookeeper客户端 图形化界面

    4. 集群状态监控:显示服务器状态、会话信息、watch事件统计等,帮助运维人员了解集群健康状况。 5. 日志查看:提供日志查看功能,有助于故障排查。 6. 配置管理:允许修改服务器配置,如数据目录、端口设置等。 三...

    zookeeper3.5.5.zip

    通过设置watch,客户端可以实时监控Zookeeper中的数据变化,当数据发生变化时,Zookeeper会向设置watch的客户端发送事件通知,从而实现分布式环境中的事件驱动。 在使用Zookeeper C库时,开发者需要了解以下几点: ...

    apache-zookeeper-3.7.0

    - ZooKeeper 提供了诸如选举、会话、watch(监视器)等机制,帮助分布式系统实现一致性。 2. **服务发现**: - 在微服务架构中,ZooKeeper 可用于服务注册与发现,服务实例可以在启动时向 ZooKeeper 注册,其他...

    zookeeper源码(注释版)

    一旦ZNode发生变化,ZooKeeper会向注册了Watch的客户端发送事件通知,这种机制使得分布式应用可以实时响应数据变化。 4. **ZooKeeper协议** ZooKeeper采用一种称为Zab(ZooKeeper Atomic Broadcast)的协议来保证...

    zookeeper-3.4.12.tar.gz.zip

    2. **Watch机制**:Watch是Zookeeper的一个重要特性,允许客户端设置监听某个节点的变化,当节点数据变化或被删除时,Zookeeper会向设置了Watch的客户端发送通知。 3. **原子操作**:所有对Zookeeper的操作都是原子...

    Zookeeper程序员指南

    4.1、Zookeeper对watch的保证 - 触发及时性:当ZNode状态变化时,watch事件将尽快发送到客户端。 - 一次性:每个watch只触发一次,直到客户端重新设置。 - 事件顺序:服务器保证同一客户端对同一ZNode的多个watch...

    java连接zookeeper的jar包

    其中,"server:port"是Zookeeper服务器的地址,sessionTimeout是会话超时时间,watch是一个回调对象,用于处理Zookeeper事件。之后,你可以使用`zookeeper`对象的方法来执行相应的Zookeeper操作。

    zookeeper-3.4.12--.rar

    ZooKeeper 提供了丰富的 Java API,包括创建、读取、更新和删除 ZNode,以及监视(watch)机制。监视器可以在节点状态变化时触发事件,实现异步通知。 4. **会话(Session)** 客户端与 ZooKeeper 服务器之间的...

    zookeeper文档

    Zookeeper的关键特性之一是它使用watch机制,允许客户端在监控的znode发生变化时获得通知。 在Zookeeper集群中,有三种角色:Leader、Follower和Observer。集群中只有一个Leader,它负责处理客户端的写请求并同步...

    zookeeper-3.4.8

    3. **API使用**:了解Java、Python等语言的Zookeeper客户端API,掌握数据操作、会话管理、watch设置等方法。 4. **故障恢复**:理解Zookeeper的故障检测和处理机制,如何进行故障转移和集群扩展。 5. **性能优化**...

    zookeeper-3.5.3-beta

    3. **Watch机制**:Watch是Zookeeper中的一个关键特性,允许客户端设置监听特定ZNode的变化。当ZNode的数据、子节点或状态发生变化时,Zookeeper会向设置Watch的客户端发送事件通知,实现了高效的异步通信。 4. **...

Global site tag (gtag.js) - Google Analytics