Zookeeper监听机制

本文为个人学习笔记整理,仅供交流参考,非专业教学资料,内容请自行甄别。

文章目录


一、监听机制

  Zookeeper的监听机制,允许某个节点状态发生变化时,监听该节点的客户端执行一些业务操作。例如前篇中提到的加锁案例。当某一个客户端create -e /lock加锁成功后,其他的客户端怎么知道该客户端执行完成业务代码,delete /lock解锁了?不能是在while循环中不断地轮询,这里就利用到了监听机制。

  Zookeeper的监听对象是事件,支持的监听事件一般有:

  • None: 连接建立事件
  • NodeCreated: 节点创建
  • NodeDeleted: 节点删除
  • NodeDataChanged:节点数据变化
  • NodeChildrenChanged:子节点列表变化
  • DataWatchRemoved:节点监听被移除
  • ChildWatchRemoved:子节点监听被移除

1.1、临时监听

  watch操作是一次性的,一旦被触发就会移除,再次使用时需要重新注册。使用案例:

  A客户端创建一个临时节点作为锁:

  B客户端监听该目录:

  A客户端执行解锁操作:

  B客户端监听到了A客户端的解锁操作(监听到了NodeDeleted事件):

1.2、永久监听

  如果想要让监听器在被触发之后,仍然保留,继续监听变更,可以使用永久监听(3.6.0版本以后才支持):

addWatch -m mode path

  A客户端修改该节点的内容,B客户端监听到

  A客户端再次修改内容,B客户端监听到,无需重新设置监听器

二、使用场景

  监听机制的使用场景,可以是配置中心动态更新服务发现与上下线感知

  在A客户端中创建配置节点,并且存储配置信息:

  然后对/config/db路径进行监听:

  B客户端对配置进行修改,A客户端感知到了变更,便可以执行对应的业务操作

  服务上下线感知是同样的道理,只不过不同的业务类型,监控的事件不一样,只需要根据不同的事件,执行自己的业务操作即可。

相关推荐
NE_STOP4 小时前
Vide Coding--AI编程工具的选择
java
大树884 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
码云数智-园园4 小时前
C++20 Modules 模块详解
java·开发语言·spring
程序员黑豆4 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
bush44 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5205 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz5 小时前
Maven依赖冲突
java·服务器·maven
swordbob5 小时前
NIO的channel中什么是 fd(File Descriptor,文件描述符)
java·开发语言·nio
咖啡八杯5 小时前
GoF设计模式——享元模式
java·spring·设计模式·享元模式