当前位置: 首页 > news >正文

Java面试39-Zookeeper中的Watch机制的原理

Zookeeper是一个分布式协调组件,为分布式架构下的多个应用组件提供了顺序访问控制能力。它的数据存储采用了类似于文件系统的树形结构,以节点的方式来管理存储在Zookeeper上的数据。
在这里插入图片描述

Zookeeper提供了一个Watch机制,可以让客户端感知到Zookeeper Server上存储的数据变化,这一机制可以让Zookeeper实现很多的场景,比如配置中心、注册中心等。Watch机制采用了Push的方式来实现,也就是说客户端和Zookeeper Server会建立一个长连接,一旦监听的指定节点发生了变化,就会通过这个长连接把变化的事件推送给客户端。
在这里插入图片描述
Watch的具体流程分为几个部分:

  1. 首先,是客户端通过指定命令比如exists、get,对特定路径增加watch
  2. 然后服务端收到请求以后,用HashMap保存这个客户端会话以及对应关注的节点路径,同时客户端也会使用HashMap存储指定节点和事件回调函数的对应关系。
  3. 当服务端指定被watch的节点发生变化后,就会找到这个节点对应的会话,把变化的事件和节点信息发给这个客户端。
  4. 客户端收到请求以后,从ZkWatcherManager里面对应的回调方法进行调用,完成事件变更的通知。

在这里插入图片描述
注:博文中图片获取自网上,侵删。

http://www.dtcms.com/a/118129.html

相关文章:

  • 前端服务配置详解:从入门到实战
  • 鸿蒙版小红书如何让图库访问完全由“你”掌控
  • 2025.04.07【数据科学新工具】| dynverse:数据标准化、排序、模拟与可视化的综合解决方案
  • MQTT-Dashboard-数据集成-WebHook、日志管理
  • 深入理解STAR法则
  • 如何开通google Free Tier长期免费云服务器(1C/1G)
  • Python----计算机视觉处理(Opencv:道路检测之车道线显示)
  • SpringWebFlux测试:WebTestClient与StepVerifier
  • 学透Spring Boot — 010. 单元测试和Spring Test
  • 青少年编程与数学 02-015 大学数学知识点 08课题、信息论
  • MySQL + ngram 最佳实践:轻量级中文 混合内容全文搜索方案
  • 秒杀系统设计方案
  • 一周学会Pandas2 Python数据处理与分析-NumPy数组的索引和切片
  • ResNet改进(21):基于ECA注意力机制的ResNet18网络实现
  • golang 内存逃逸 栈与堆区别
  • 如何解决:http2: Transport received Server‘s graceful shutdown GOAWAY
  • qemu仿真调试esp32,以及安装版和vscode版配置区别
  • 字符串操作栈和队列
  • MES生产工单管理系统,Java+Vue,含源码与文档,实现生产工单全流程管理,提升制造执行效率与精准度
  • C++使用Qt Charts可视化大规模点集
  • matlab中排序函数sortrows的用法
  • 快速入手-前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt
  • SQL注入流量分析
  • 【算法】二分查找
  • 单片机实现触摸按钮执行自定义任务组件
  • IntelliJ IDEA下开发FPGA——FPGA开发体验提升__下
  • 量子计算模拟中的GPU加速:从量子门操作到Shor算法实现
  • 嵌入式硬件实战基础篇(三)-四层板PCB设计-步进电机驱动(TMC2208/TMC2209)
  • 双周报Vol.69: C FFI 支持 borrow、新增.mbt.md测试与调试、WASM 后端支持extern type..
  • Python----计算机视觉处理(Opencv:道路检测完整版:透视变换,提取车道线,车道线拟合,车道线显示,)