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客户端感知到了变更,便可以执行对应的业务操作

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

相关推荐
WeiXin_DZbishe11 分钟前
基于springboot装修风格选择系统的设计与开发-计算机毕设【课程设计】77964
java·vue.js·spring boot·后端·python·php·课程设计
XZ-07000117 分钟前
week9-三元表达式
java·前端·python
摇滚侠18 分钟前
《大模型应用开发实践:基于 Spring AI+DeepSeek 实现》第 11 章 大模型技术概览 阅读笔记 1
人工智能·笔记·spring
云和数据.ChenGuang27 分钟前
name=“张三“ age=18 weight=100.3 print (name,age,weight)
java·服务器·前端
Yeswater1 小时前
从 NIO 到 Netty:五个坑,和一张把它填平的基础设施网
java·后端·netty
denlaku1 小时前
JDK 15 新特性详解
java·开发语言
学IT的周星星1 小时前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
荣码1 小时前
LangSmith可观测性:AI应用出bug根本不知道哪里出了问题,我踩了4个坑
java·python
en.en..1 小时前
MRS/MSR 指令操作 xPSR 寄存器
linux·运维·服务器
Brilliantwxx1 小时前
【Linux】 自主shell编写巩固复习篇
linux·运维·服务器·开发语言