zookeeper Curator(3):Watch事件監聽

文章目錄

  • Curator API 常用操作 Watch事件監聽
  • NodeCache
  • PathChildrenCache
  • TreeCache

本章代碼已分享至Gitee: https://gitee.com/lengcz/curator01

Curator API 常用操作 Watch事件監聽

在這里插入圖片描述

在這里插入圖片描述

  • zookeeper 允許用戶在指定節點上注冊一些Watcher ,并且在一些特定事件觸發的時候,zookeeper 服務端會將事件通知到感興趣的客戶端上,該機制是zookeeper 實現分布式協調服務的重要特性。

  • zookeeper 中引入了Wather 機制來實現了發布/訂閱功能,能夠讓多個訂閱者同時監聽某一個對象,當一個對象自身狀態發生變化時,會通知所有訂閱者。

  • zookeeper 原生支持通過注冊Wather 來進行事件監聽,但是其使用起來特別不方便,需要開發人員自己反復注冊Wather,比較繁瑣。

  • Curator 引入了Cache 來實現對zookeeper 服務端事件的監聽。

  • zookeeper 提供了三種Watcher

    • NodeCache : 只是監聽某一個特定的節點
    • PathChildrenCache: 監聽一個ZNode的子節點。
    • TreeCache :可以監控整個樹上的所有節點,類似于PathChildrenCache和NodeCache 的結合

NodeCache

NodeCache 用于監聽單個節點的變化,包括節點的創建、更新和刪除事件。適用于需要關注特定節點數據變化的場景。

 /*** NodeCache  給指定一個節點注冊監聽器* @throws Exception*/@Testpublic void testNodeCache() throws Exception{//1  創建NodeCache 對象NodeCache nodeCache = new NodeCache(client,"/app1",false);//2 注冊監聽nodeCache.getListenable().addListener(new NodeCacheListener() {@Overridepublic void nodeChanged() throws Exception {logger.info("節點變化了");byte[] data = nodeCache.getCurrentData().getData(); // 獲取數據logger.info(new String(data));}});//3 開啟監聽,如果設置 true,則開啟監聽,加載緩沖數據nodeCache.start(true);// 防止虛擬機退出while(true){}}

NodeCache 會自動處理連接中斷和會話過期,并在重新連接后恢復監聽。可以通過 nodeCache.getCurrentData() 獲取當前節點數據。

PathChildrenCache

PathChildrenCache 監聽指定路徑下子節點的變化,包括子節點的添加、移除和更新事件。適用于需要監控目錄結構變化的場景。
tips: 監聽只會對子節點有效,對本節點無效。

   /*** PathChildrenCache  監聽某個子節點的所有子節點(不含本節點)* @throws Exception*/@Testpublic void testPathChildrenCache() throws Exception{//1  創建PathChildrenCache對象PathChildrenCache nodeCache = new PathChildrenCache(client,"/app2",true);//2 注冊監聽nodeCache.getListenable().addListener(new PathChildrenCacheListener() {@Overridepublic void childEvent(CuratorFramework client, PathChildrenCacheEvent pathChildrenCacheEvent) throws Exception {logger.info("子節點變化");logger.info(JSONObject.toJSONString(pathChildrenCacheEvent));if(pathChildrenCacheEvent.getType().equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){ //子節點變化,打印數據byte[] data = pathChildrenCacheEvent.getData().getData();logger.info(new String(data));}}});//3 開啟監聽,如果設置 true,則開啟監聽,加載緩沖數據nodeCache.start();// 防止虛擬機退出while(true){}}

在這里插入圖片描述

TreeCache

TreeCache 結合了 NodeCache 和 PathChildrenCache 的功能,可以監聽指定節點及其所有子節點的變化。適用于需要完整樹形結構監控的場景。

  /*** TreeCache  監聽某個子節點自己和所有子節點, 相當于NodeCache和PathChildrenCache的組合* @throws Exception*/@Testpublic void testTreeCache() throws Exception{//1  創建TreeCache對象TreeCache nodeCache = new TreeCache(client,"/app2");//2 注冊監聽nodeCache.getListenable().addListener(new TreeCacheListener() {@Overridepublic void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception {logger.info("節點變化");logger.info(JSONObject.toJSONString(treeCacheEvent));if(treeCacheEvent.getType().equals(PathChildrenCacheEvent.Type.CHILD_UPDATED)){ //子節點變化,打印數據byte[] data = treeCacheEvent.getData().getData();logger.info(new String(data));}}});//3 開啟監聽,如果設置 true,則開啟監聽,加載緩沖數據nodeCache.start();// 防止虛擬機退出while(true){}}

TreeCache 提供的事件類型更豐富,包括 NODE_ADDED、NODE_UPDATED、NODE_REMOVED 等。可以獲取完整的節點樹結構變化信息。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/86642.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/86642.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/86642.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多模態融合相機L3CAM

多模態融合相機L3CAM L3CAM是Beamagine公司推出的多模態傳感器融合技術,結合了激光雷達(LiDAR)和可見光攝像頭,旨在為自動駕駛、工業機器人和其他需要精確環境感知的應用場景提供高效、安全的解決方案。 L3CAM技術參數 L3CAM結合…

結構化思維

前言 洞悉分析方法論 系統解決管理問題 1 構建問題分析框架 1.1 摘要 (1)何謂問題分析和解決? (2)問題分析和解決的基本原則 1.2 什么是問題分析與決策? 1.3 問題解決者需要具備的四種能力 &#xf…

什么是數字簽名(ECDSA)?

數字簽名是區塊鏈、數字身份認證和安全通信的核心技術之一,ECDSA(橢圓曲線數字簽名算法)是目前最常見、最主流的數字簽名算法之一,尤其在區塊鏈系統(如比特幣、以太坊、EOS)中廣泛應用。 一、什么是數字簽名…

深入剖析AI大模型:Dify的介紹

今天介紹的內容,跟大模型開發還是息息相關的。俗話說:有人的地方就是江湖!對于我們技術其實也一樣,一個新技術的出現,自然會衍生出相應的生態圈。今天的文字只是介紹,以后會有專門的實操篇,主要…

Open VSX Registry關鍵漏洞使攻擊者可完全控制Visual Studio Code擴展市場

網絡安全研究人員近日披露了 Open VSX Registry("open-vsx[.]org")中存在的一個關鍵漏洞。若被成功利用,攻擊者可能完全控制整個 Visual Studio Code 擴展市場,造成嚴重的供應鏈風險。 漏洞詳情與潛在影響 Koi Securi…

Python從入門到高手9.1節-Python中的字典類型

目錄 9.1.1 理解字典類型 9.1.2 字典的類型名 9.1.3 字典的定義 9.1.4 字典的主要性質 9.1.5 好好學習,天天向上 9.1.1 理解字典類型 在日常生活中,我們常常會接觸到“字典”這種數據類型,例如一本書籍的目錄結構,在目錄結構…

封禁UDP端口提高防御能力分析

封禁不必要的 UDP 端口 確實可以在一定程度上提高系統的防御力,但這并不是一個絕對的“好”或“壞”的問題,需要根據具體情況來判斷。以下是詳細分析: ? 封禁 UDP 端口能提高防御力的原因 (優點) 減少攻擊面: 服務暴露&#xff…

阿里云-arms監控

監控java應用 若是容器集群環境,則選擇容器服務環境 手動安裝方式,是手動把 agent的jar包放到 ecs服務器,然后運行個人的spring boot服務時,加上一些參數,將agent也啟動運行 手動集成-添加agent 監控的是ecs中的java應…

c語言 char *str = ““ 和 char *str = NULL 以及 char str[] = {} 區別

目錄 前言char *str "" 和 char *str NULL 區別char *str NULL 和 char str[] {} 區別char *str "" 和 char str[] {} 區別char *str "" 和 const char *str "" 區別 前言 C語言指針的使用非常常見且易出錯,這里對…

小程序入門: tab bar 實現多頁面快速切換效果

在小程序開發中,tab bar 是實現多頁面快速切換的關鍵組件,能極大提升用戶體驗。上一篇我們完成了基礎配置,今天深入探索,打造更豐富實用的 tab bar 效果。 實現目標 這次要在小程序底部創建包含 “首頁”“消息”“聯系我們” 三…

Python 數據分析:numpy,抽提,多維切片索引

目錄 1 示例代碼2 歡迎糾錯3 免費爬蟲------以下關于 Markdown 編輯器新的改變功能快捷鍵合理的創建標題,有助于目錄的生成如何改變文本的樣式插入鏈接與圖片如何插入一段漂亮的代碼片生成一個適合你的列表創建一個表格設定內容居中、居左、居右SmartyPants 創建一個…

【向上教育】結構化面試概述.pdf

目 錄 第一章 面試須知—面試形式 .......................................................................................................... 1 一、結構化面試 .................................................................................................…

STM32F407控制單個張大頭閉環步進電機講解與梯形加減速(HAL庫)

文章目錄 硬件連接CubeMX配置**使用TIM5定時器CH3,即PA2作為脈沖控制,PE5控制方向(TIM5_CH4是為控制雙電機做準備的可以先不配置)** 設置占空比為50%,以下為AI講解重要!!!定時器更新中斷脈沖觸發原理詳解PW…

MongoDB入門學習(含JAVA客戶端)

0.序章 致命的面試問題:為什么使用MongoDB? 大型的分布式的文檔型數據庫,也是NoSQL數據庫(例如 redis) MongoDB適合數據量大而價值又低的這種數據(播放進度、評論、彈幕,實時數據的CRUD&…

RedisCache與StringRedisTemplate的深度對比

1. 基本概念 RedisCache ??定位??:自定義封裝的Redis緩存工具類??特點??:通常針對業務場景進行了高層抽象??典型功能??: 帶過期時間的緩存操作自定義序列化方式業務鍵前綴管理簡化常用操作API StringRedisTemplate ??定位…

HOOPS Visualize技術詳解(二):3D圖形系統HOOPS/3DGS的段結構與屬性機制

在工業級三維可視化領域中,HOOPS Visualize憑借其高性能和模塊化設計被廣泛應用于CAD、CAM、仿真、BIM等工程軟件中。其中,HOOPS 3D Graphics System(簡稱HOOPS/3DGS)是HOOPS Visualize的核心組件,承擔著圖形場景管理、…

隨機化在臨床試驗中的應用與挑戰

一、隨機化的核心目的 1.1 控制混雜偏倚 1.1.1 平衡預后因素 確保已知/未知預后因素在組間分布均衡,避免基線不平衡影響結果。 1.1.2 避免選擇偏倚 防止研究者或患者主觀選擇分組,保障組間差異歸因于干預。 1.2 保障統計推斷有效性 1.2.1 滿足獨立性假設 滿足統計檢驗…

在C++中#pragma“可選預處理指令的作用“。

文章目錄 1. 標準定位:2. 語法形式:3. 常見用途舉例4. 為什么用 #pragma?5. 宏里用 __pragma / _Pragma6. 常見誤區 在 C/C 里,#pragma 本質上是“可選預處理器指令”,用來告訴編譯器在編譯某段代碼時啟用或關閉某些特…

windows系統中docker數據遷移出系統盤

1、關閉docker 2、移動docker數據 找到docker數據目錄,一般在C:\Users\61050\AppData\Local\Docker文件,將整個docker目錄復制到其他盤(例如 D:\Docker),為保證不出錯,可以先提前復制一份。 3、創建符號鏈…

win11電腦突然休眠問題排查

WinR, 輸入eventvwr.msc打開事件查看器。找到出現問題的時間點那條數據。會顯示原因。首先還是要先排查原因。再去猜測。我因為猜測就直接去了科技市場掃灰加硅來了一個遍。另外還買了散熱風扇和金屬支架。雖然不知道有沒有必要。但是別人是很原因。到頭來早上還是發現自動休眠…