欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

zookeeper的watch機制原理解析

 更新時間:2022年06月26日 08:02:52   作者:怪?咖@  
Watcher,異步通知客戶端,并且刪除哈希表中對應(yīng)的 Key-Value,這篇文章主要介紹了zookeeper的watch機制詳細講解,需要的朋友可以參考下

一、Watch機制介紹

我們可以把 Watch 理解成是注冊在特定 Znode 上的觸發(fā)器。當這個 Znode 發(fā)?改變,也就是調(diào)?了 create , delete , setData ?法的時候,將會觸發(fā) Znode 上注冊的對應(yīng)事件,請求 Watch 的客戶端會接收到異步通知。

具體交互過程如下:

  • 客戶端調(diào)? getData ?法的時候, watch 參數(shù)設(shè)置為 true 。服務(wù)端接到請求,返回節(jié)點數(shù)據(jù),并 且在對應(yīng)的哈希表?插?被 Watch的 Znode 路徑。
  • 當被 Watch 的 Znode 已刪除,服務(wù)端會查找哈希表,找到該 Znode 對應(yīng)的所有

Watcher,異步通知客戶端,并且刪除哈希表中對應(yīng)的 Key-Value。

這里的服務(wù)端指的是zk的服務(wù)端。

客戶端使?了NIO通信模式監(jiān)聽服務(wù)端的調(diào)?。

二、zkCli客戶端使?watch

zkCli客戶端常用命令詳解:

http://www.dbjr.com.cn/article/252869.htm

  • create /test:創(chuàng)建test節(jié)點
  • set /test aaa:給test節(jié)點賦值aaa數(shù)據(jù)
  • get -w /test:?次性監(jiān)聽節(jié)點,注意這里是監(jiān)聽的數(shù)據(jù)變化,假如test子節(jié)點的數(shù)據(jù)發(fā)生變化也是收不到監(jiān)聽消息的(假如在監(jiān)聽節(jié)點下創(chuàng)建和刪除子節(jié)點這些都是監(jiān)聽不到的,但是刪除監(jiān)聽的節(jié)點是可以監(jiān)聽到的)
  • ls -w /test :監(jiān)聽?錄,創(chuàng)建和刪除?節(jié)點會收到通知。?節(jié)點中新增節(jié)點不會收到通知
  • ls -R -w /test :對于?節(jié)點中?節(jié)點的變化,但內(nèi)容的變化不會收到通知

2.1、get -w命令詳解

創(chuàng)建一個節(jié)點后,然后通過 get -w /test監(jiān)聽節(jié)點,然后使用另外一個客戶端對該節(jié)點進行了賦值,這時候可以看到收到的監(jiān)聽消息。

監(jiān)聽到后并不是監(jiān)聽到修改后新的值,而是類似于一個消息,意思是告訴他節(jié)點發(fā)生變化了。這時候可以通過get /test命令來獲取節(jié)點被修改后的值。

再次使用另一個客戶端set了一下值,并沒有監(jiān)聽到消息,因為 get -w /test是?次性監(jiān)聽節(jié)點。

假如想一直監(jiān)聽的話,可以在收到監(jiān)聽消息后,立馬再執(zhí)行 get -w /test命令。

刪除節(jié)點是可以監(jiān)聽到的,監(jiān)聽到的消息事件類型和數(shù)據(jù)修改是不一樣的。

2.2、ls -w命令詳解

ls -w監(jiān)聽當前節(jié)點的創(chuàng)建和刪除

又使用命令開啟了監(jiān)聽,然后在剛剛創(chuàng)建的sub1節(jié)點下又創(chuàng)建了一個子節(jié)點,這時候收不到監(jiān)聽的。

2.3、ls -R -w命令詳解

三、curator客戶端使?watch

springboot整合curator客戶端:http://www.dbjr.com.cn/article/252816.htm

我直接是基于上一篇文章當中的項目進行watch練習(xí)!

@Test
/**
  * 監(jiān)聽test節(jié)點
  *
  * @throws Exception
  */
 @Test
 public void addNodeListener() throws Exception {

     NodeCache nodeCache = new NodeCache(curatorFramework, "/test");
     nodeCache.getListenable().addListener(new NodeCacheListener() {
         @Override
         public void nodeChanged() throws Exception {
             log.info("{} path nodeChanged: ", "/test");
             printNodeData();
         }
     });
     nodeCache.start();
     // 阻塞線程
     System.in.read();
 }

 /**
  * 獲取test節(jié)點數(shù)據(jù)并打印
  *
  * @throws Exception
  */
 public void printNodeData() throws Exception {
     byte[] bytes = curatorFramework.getData().forPath("/test");
     log.info("data: {}", new String(bytes));
 }

到此這篇關(guān)于zookeeper的watch機制原理解析的文章就介紹到這了,更多相關(guān)zookeeper watch機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解

    Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解

    這篇文章主要介紹了Kafka多節(jié)點分布式集群搭建實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • SpringDataRedis簡單使用示例代碼

    SpringDataRedis簡單使用示例代碼

    這篇文章主要介紹了SpringDataRedis簡單使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Java實現(xiàn)圖片轉(zhuǎn)換PDF文件的示例代碼

    Java實現(xiàn)圖片轉(zhuǎn)換PDF文件的示例代碼

    這篇文章主要介紹了Java實現(xiàn)圖片轉(zhuǎn)換PDF文件的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Mybatis動態(tài)SQL的示例代碼

    Mybatis動態(tài)SQL的示例代碼

    本文主要介紹了Mybatis動態(tài)SQL的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題

    Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題

    這篇文章主要給大家介紹了關(guān)于Maven打包所有依賴到一個可執(zhí)行jar中遇到的問題,將依賴打入jar包,由于maven管理了所有的依賴,所以將項目的代碼和依賴打成一個包對它來說是順理成章的功能,需要的朋友可以參考下
    2023-10-10
  • Java實現(xiàn)任務(wù)超時處理方法

    Java實現(xiàn)任務(wù)超時處理方法

    任務(wù)超時處理是比較常見的需求,Java中對超時任務(wù)的處理有兩種方式,在文中給大家詳細介紹,本文重點給大家介紹Java實現(xiàn)任務(wù)超時處理方法,需要的朋友可以參考下
    2019-06-06
  • Java聊天室之實現(xiàn)聊天室服務(wù)端功能

    Java聊天室之實現(xiàn)聊天室服務(wù)端功能

    這篇文章主要為大家詳細介紹了Java簡易聊天室之實現(xiàn)聊天室服務(wù)端功能,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • Java的JSTL標簽庫詳解

    Java的JSTL標簽庫詳解

    JSTL包含用于編寫和開發(fā)JSP頁面的一組標準標簽,它可以為用戶提供一個無腳本環(huán)境。在此環(huán)境中,用戶可以使用標簽編寫代碼,而無須使用Java腳本
    2023-05-05
  • SpringCloud Eureka搭建的方法步驟

    SpringCloud Eureka搭建的方法步驟

    這篇文章主要介紹了SpringCloud Eureka搭建的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    ReentrantReadWriteLock?讀寫鎖分析總結(jié)

    這篇文章主要介紹了ReentrantReadWriteLock 讀寫鎖分析總結(jié),ReentranReadWriteLock中有兩把鎖,一把讀鎖,一把寫鎖,關(guān)于這兩把鎖的介紹,需要的小伙伴可以參考一下
    2022-05-05

最新評論