`

zookeeper 处理状态变化

 
阅读更多

状态变化的使用场景: 从节点需要知道主要主节点挂掉,从节点需要知道任务分配给了自己,Zookeeper的客户端定时轮询Zookeeper集群状态。避免轮询的方式是,使用监听点,通过监听点,客户端可以对指定的znode节点注册一个通知请求,在发生变化时就会收到一个通知。

 

一、单次触发器(监视点 ): 只会触发一次事件

1、监视点可以跨越不同服务端的连接而保持,当一个客户端与zookeeper服务端的连接断开后连接到集群中的另一个服务端,客户端会发送未触发的监视点列表。在注册监视点时,服务端将要检查以监视的znode节点在之前监视点再之后是否变化,如果znode节点已经发生变化,一个监视点的事件会被发送给客户端,否则再新的服务端上注册监视点。

 

2、单次触发是否会丢失事件 :不会带来影响,因为任何在接受通知与注册新监视点之间的变化情况,可以通过zookeeper的状态信息来获得。

 

二、如何设置监视点 :监视点有两种类型,数据监视点和子节点监视点。

1、创建、删除或设置一个znode节点的数据都会触发数据监视点,exists 和 getData 这两个操作可以设置数据监视点。

2、只有getChildren 操作可以设置子节点和监视点。

对于zookeeper节点的事件的通知,可以使用默认的监视点,也可以单独实现。

3、监视点存在一个问题,一旦设置监视点就无法移除。

 

三、普遍模型

1、通用代码的模式

(1) 进行调用异步

zk.exists("/myZnode",myWatcher,existsCallback,null);

 

(2) watcher 实现

Watcher myWatcher = new Watcher(){

   public void process(WatccherEvent e){}

}

(3) 回调函数

StatCallback existCallback = new  StatCallback(){

   public void processResult(int rc,String path,Object ctx,Stat stat){}

}

 

 

四、主-从模式的例子 

 

五、multiop 调用方式 : 可以原子性地执行多个Zookeeper的操作

 

六、通过监视点替代显式缓存管理 : 监视点可以让客户端在本地缓存一个版本的数据,并在数据发生变化时接受到通知来进行更新。

 

七、zookeeper (集群中所有服务器)顺序的保障

写操作的顺序 : 对集群中一台服务器对的状态修改顺序,其他服务器的状态也会按照同样的顺利修改。

读操作的顺序 :  客户端会观察到相同的更新顺序。

通知顺利 

 

注意: 避免在一个节点设置大量的监视点,因为设置大量监视点,这个节点会产生尖峰通知。 

 

 

 

 

分享到:
评论

相关推荐

    Zookeeper集群无状态平滑升级、迁移1

    在实际运营中,由于业务需求变化或技术迭代,我们可能会遇到对Zookeeper集群进行升级或迁移的情况。本文将详细介绍这两种操作,以及如何实现无状态平滑升级和迁移,确保服务的连续性和数据完整性。 首先,了解为何...

    Zookeeper 分布式过程.pdf

    “第4章处理状态变化”着重讲解了在分布式系统中,状态变化是不可避免的,ZooKeeper提供了监听机制来帮助客户端监听节点状态的变化。本章介绍了如何设置监听点,单次触发器,以及如何处理主-从模式下的节点变化等。...

    zookeeper 3.6.3 源码下载

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

    apache-zookeeper-3.5.6-bin.tar

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

    基于zookeeper动态扩展处理分类数据

    例如,新请求可以根据服务实例在ZooKeeper上的状态和负载分布,动态地路由到合适的实例。 3. **配置管理**:分类数据处理的相关配置可以存储在ZooKeeper上,服务实例可以从ZooKeeper获取最新配置,实现动态配置更新...

    zookeeper-3.4.12官方包

    Zookeeper还提供了多种watcher机制,使得客户端可以监听并接收Zookeeper节点变化的通知,从而实现动态配置管理和分布式事件通知。 在Zookeeper-3.4.12中,可能已经对服务启动闪退的问题进行了处理。这通常涉及到...

    zookeeper 3.8.4

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

    zookeeper-3.8.0安装包下载

    4. 监控与调试:了解如何查看 Zookeeper 的运行状态,如使用 jmx 监控、日志分析等。 5. 客户端使用:学习如何编写 Java 或其他语言的客户端代码,与 Zookeeper 交互。 6. 高可用性与故障恢复:理解 zab 协议的工作...

    zookeeper查看器

    - **监视(Watch)**: 客户端可以设置监视点来监听Znode的变化,一旦发生改变,Zookeeper会向客户端发送事件通知。 2. **Zookeeper查看器功能** - **节点浏览**: 工具能够展示Zookeeper数据树的完整结构,允许...

    zookeeper3.6.0-linux版本

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。...

    zookeeper限制ip版

    Apache ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。Zookeeper 在微服务、大数据等领域的应用广泛,尤其在...

    ZooKeeper典型使用场景

    ZooKeeper可以用于监控集群中机器的状态变化,实现实时响应。 **使用方法**: - **集群机器监控**:通过在ZooKeeper中注册临时节点来实现对集群机器状态的实时监控。当机器状态发生变化时,监控系统能够立即做出...

    zookeeper整理文档

    - **事件通知**:当某台机器的状态发生变化时,Zookeeper可以及时通知其他节点,以便它们做出相应的调整。 - **中央调度**:Zookeeper可以作为中央调度器,根据实时状态来动态分配任务。 - **易用性**:Zookeeper...

    zookeeper实战

    Curator的常用API包括但不限于:处理连接状态变化、简化节点创建/删除操作、锁的实现等。 ZooKeeper的领导者选举采用了一种称为Paxos的算法,确保在发生领导人故障时,可以快速有效地选举出新的领导人。Paxos算法...

    zookeeper3.5.5.zip

    5. **错误处理**:Zookeeper返回的每个操作都有一个状态码,如`ZOK`表示成功,其他值表示各种错误,需要对这些错误进行适当的处理。 6. **版本控制**:Zookeeper支持对节点的版本控制,每次更新都会增加版本号,这...

    Zookeeper中文开发指南

    4. **集群管理**: 维护集群成员信息,监控成员状态变化。 5. **队列管理**: 实现先进先出(FIFO)的队列服务。 **五、Zookeeper API** Zookeeper 提供了丰富的Java和C语言API,包括创建、删除、设置和获取Znode,...

    zookeeper 自己学习资料

    4. **Zookeeper的Watcher机制**:允许客户端注册监听事件,当数据或状态发生变化时,Zookeeper会触发回调通知。 《分布式服务框架 Zookeeper -- 管理分布式环境中的数据 - 给自己一片纯净的天空 - 开源中国社区.htm...

    zookeeper-3.4.14.zip

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

    zookeeper连接工具

    - **watcher事件监视**: 可以设置和查看watcher事件,方便调试和监控Zookeeper状态变化。 4. **Qt库的作用** - **GUI界面**: Qt5系列的DLL文件负责构建和展示连接工具的用户界面,如窗口、按钮、列表等。 - **...

    ZooKeeper技术原理与应用.pptx

    ZooKeeper是一种分布式协调服务,用于维护和监控存储数据状态的变化,解决分布式集群中应用程序的一致性问题。 ZooKeeper的核心是原子广播机制,保障了各个Server之间的同步。 ZooKeeper架构与原理 ZooKeeper的...

Global site tag (gtag.js) - Google Analytics