`
zoutm
  • 浏览: 96388 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

zookeeper系列之异步通知模式-Watcher

阅读更多

Watcher介绍

 

Watcher是Zookeeper用来实现distribute lock, distribute configure, distribute queue等应用的主要手段。要监控data_tree上的任何节点的变化(节点本身的增加,删除,数据修改,以及孩子的变化)都可以在获取该数据时注册一个Watcher,这有很像Listener模式。一旦该节点数据变化,Follower会发送一个notification response,client收到notification响应,则会查找对应的Watcher并回调他们。 有以下接口可以注册Watcher:

1. Stat exists(final String path, Watcher watcher)

2. Stat exists(String path, boolean watch)

3. void exists(String path, boolean watch, StatCallback cb, Object ctx)

4. void exists(final String path, Watcher watcher, StatCallback cb, Object ctx)

5. byte[] getData(final String path, Watcher watcher, Stat stat)

6. byte[] getData(String path, boolean watch, Stat stat)

7. void getData(final String path, Watcher watcher, DataCallback cb, Object ctx)

8. void getData(String path, boolean watch, DataCallback cb, Object ctx)

9. List<string> getChildren(final String path, Watcher watcher)

10. List<string> getChildren(String path, boolean watch)

11. void getChildren(final String path, Watcher watcher,ChildrenCallback cb, Object ctx)

 

如果参数需要传递watcher,则可以自己定义Watcher进行回调处理。如果是Boolean型变量,当为true时,则使用系统默认的Watcher,系统默认的Watcher是在zookeeper的构造函数中传递的Watcher。如果Watcher为空或者Boolean变量时为false,则表明不注册Watcher。如果获取数据后不需要关注该数据是否变化,就不需要注册Watcher。上面没有返回值的都是异步调用模式。需要注意的是,一旦Watcher被调用后,将会从map中删除,如果还需要关注数据的变化,需要再次注册。 Watcher原理 要搞清楚Watcher的原理,让我们看看Watcher的工作流程。


Watcher的使用与注意事项

 

Watcher需要每次都要注册。

并不是Watcher的节点被修改n次,客户端注册就会被通知n次。如果watcher的节点频繁被修改,有可能修改了10次,客户端被通知8次。如果client与server连接状态发生改变,watcher总是会被通知。

 

  • 大小: 12.6 KB
分享到:
评论
2 楼 zoutm 2011-05-19  
画得不好,我喜欢想到什么画什么,其实是用viso划的
1 楼 soaFocus 2011-04-14  
看完了zookeeper这个系列
很好奇这些图是用什么软件画的?

相关推荐

    apache-zookeeper-3.5.9-bin.tar.gz

    - **Watcher**: 事件监听机制,允许客户端注册对Znode的变更或事件的通知,实现异步通信。 - **Session**: 客户端与Zookeeper服务器之间的连接,具备超时机制,用于保持客户端的会话状态。 2. **Zookeeper的主要...

    zookeeper-3.4.4.tar.gz

    - **Watcher 机制**:Watcher 是一种事件监听器,可以在节点状态变化时触发通知,实现分布式环境中的异步通信。 2. **Zookeeper 的主要功能** - **命名服务**:通过创建唯一的全局命名空间,帮助分布式应用进行...

    zookeeper编程api

    Zookeeper中的`Watcher`是异步事件处理机制,可以监听节点的创建、删除、数据变更等事件。当事件触发时,会调用预先注册的回调方法。注意,Watchers是一次性的,节点状态改变后需重新注册。 4. **会话与会话事件**...

    zookeeper-API开发lib

    - Watcher是ZooKeeper中的事件监听器,可以注册到ZNode上,当ZNode的状态发生变化时,Watcher将收到通知。Watcher是单次触发的,即触发一次后需要重新注册。 - Watcher事件分为四种:节点创建(CREATED)、节点...

    zookeeper学习入门-搞懂这些就够了

    - 当指定的 znode 发生变化时,Zookeeper 会异步地通知客户端。 - **ACL 访问控制**: - Zookeeper 支持基于权限的访问控制,可以通过设置 ACL 来限制节点的读写权限。 - ACL 包括创建、读取、写入、删除、管理 ...

    zookeeper-3.4.9的源码

    - **Watcher**:观察者机制,用于监听ZNode的变更事件,实现异步通知。 5. **一致性与状态机**: - **Zookeeper使用Paxos算法的简化版**:Zookeeper采用FastPaxos策略,简化了Paxos算法,提高了选举效率。 - **...

    zookeeper-3.4.10.tar.gz.zip

    5. **Watcher**:Watcher是Zookeeper的一个重要特性,它提供了事件通知机制。当Zookeeper中的某个节点状态发生改变时,已注册的Watcher可以接收到通知,从而实现异步事件处理。 6. **选举机制**:Zookeeper集群由多...

    zookeeper-3.4.9

    - **观察者模式(Watcher)**:Zookeeper允许客户端注册Watcher,当特定节点发生变化时,Zookeeper会触发Watcher事件,实现分布式环境中的异步通知机制。 2. **架构设计**: - **主从结构**:Zookeeper集群由多个...

    Zookeeper基础

    - **Watcher**:Watcher是Zookeeper的一个重要特性,它是一种异步的通知机制,允许客户端对特定节点进行监视,当节点状态发生变化时,Zookeeper会通知已注册的Watcher。 2. **Zookeeper的主要操作** - **读操作**...

    zookeeper-3.4.8源码包

    Watcher是Zookeeper提供的一种异步通知机制,客户端可以为某个ZNode设置Watcher,当该ZNode发生变更时,Zookeeper将触发Watcher事件,向客户端发送通知。 五、Zookeeper API详解 3.4.8版本的Zookeeper API包括创建...

    zookeeper-3.3.1

    - **Watcher机制**:Watcher是Zookeeper的事件监听器,可以设置在Znode上,当Znode发生变化时,Watcher会接收到通知,实现异步通信。 2. **Zookeeper架构** - **集群模式**:Zookeeper通常以集群部署,每个节点...

    ZooKeeper常见29道面试题及答案.docx

    4. 异步发送:Watcher 的通知事件从服务端异步发送到客户端。 ZooKeeper 在分布式锁和分布式队列等领域有着广泛的应用。它可以用来实现分布式锁,例如使用 Redis 来设计分布式锁,使用 ZooKeeper 来设计分布式锁...

    zookeeper_javaAPI-main.zip

    此外,Zookeeper的Java API还提供了异步操作接口,如`AsyncCreate`、`AsyncDelete`等,允许开发者在不阻塞主线程的情况下处理Zookeeper操作。 在实际应用中,Zookeeper常被用于实现分布式锁、分布式队列、分布式...

    zookeeper-3.4.9.jar

    2. Watcher:一种事件监听机制,当ZNode的状态发生改变时,会触发Watcher事件,向客户端发送通知。 3. ACL(Access Control Lists):Zookeeper提供了权限控制,通过ACL可以对ZNode进行读写操作的权限设定。 4. ...

    zookeeper-3.4.6.tar.gz

    3. **观察者模式(Watcher)**:Zookeeper提供了一种异步通知机制,即Watcher。当Znode的状态发生改变时,注册过该Znode的Watcher的客户端会被通知。 二、Zookeeper主要功能 1. **命名服务**:通过创建唯一的全局...

    zookeeper-3.4.12.tar.gz

    3. **Watcher机制**:Watcher是Zookeeper的一种事件监听机制,当Zookeeper中的数据发生变化时,注册了对应事件的Watcher会接收到通知,实现事件的异步回调。 二、Zookeeper工作原理 1. **主从复制模式**:...

    zookeeper-3.4.5

    - **Watcher**:一种事件监听机制,当Znode发生变化时,关联的Watcher会接收到通知,实现异步通信。 - **Session**:客户端与Zookeeper服务器之间的连接,会话期间可以进行读写操作,过期则断开连接。 2. **主要...

    zookeeper的java-Demo

    当ZooKeeper中的数据发生变化时,可以触发预先注册的Watcher,从而实现异步通知。 4. **数据一致性**:ZooKeeper通过ZAB协议确保在分布式环境中数据的一致性,即所有服务器节点上的数据状态始终保持同步。 现在,...

    zookeeper-3.8

    当Znode的状态发生变化时,注册了对应Watcher的客户端将收到通知,实现异步事件处理。 4. **数据模型**:Zookeeper的数据模型采用层次化的命名空间,类似于文件系统的目录结构。每个节点都可以有子节点,并且可以...

    Zookeeper面试题.pdf

    由于Watcher事件的异步发送,服务端到客户端的通知过程效率较高,但客户端必须自行处理事件的具体内容。 综上所述,Zookeeper 是一个强大且灵活的工具,广泛应用于分布式系统中的协调任务。理解并掌握其核心概念和...

Global site tag (gtag.js) - Google Analytics