最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

zookeeper的watch機(jī)制原理解析

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

一、Watch機(jī)制介紹

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

具體交互過(guò)程如下:

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

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

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

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

二、zkCli客戶端使?watch

zkCli客戶端常用命令詳解:

http://m.fzitv.net/article/252869.htm

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

2.1、get -w命令詳解

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

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

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

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

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

2.2、ls -w命令詳解

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

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

2.3、ls -R -w命令詳解

三、curator客戶端使?watch

springboot整合curator客戶端:http://m.fzitv.net/article/252816.htm

我直接是基于上一篇文章當(dāng)中的項(xiàng)目進(jìn)行watch練習(xí)!

@Test
/**
  * 監(jiān)聽test節(jié)點(diǎn)
  *
  * @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é)點(diǎn)數(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機(jī)制原理解析的文章就介紹到這了,更多相關(guān)zookeeper watch機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring中的代理ProxyFactory解析

    Spring中的代理ProxyFactory解析

    這篇文章主要介紹了Spring中的ProxyFactory解析,在Java中,代理模式的實(shí)現(xiàn)通常依靠Proxy類和InvocationHandler接口,本文將介紹如何使用ProxyFactory來(lái)創(chuàng)建代理模式,需要的朋友可以參考下
    2023-12-12
  • 基于struts2和hibernate實(shí)現(xiàn)登錄和注冊(cè)功能

    基于struts2和hibernate實(shí)現(xiàn)登錄和注冊(cè)功能

    這篇文章主要為大家詳細(xì)介紹了基于struts2和hibernate實(shí)現(xiàn)登錄和注冊(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • mybatis 如何判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)

    mybatis 如何判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)

    這篇文章主要介紹了mybatis 判斷l(xiāng)ist集合是否包含指定數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • SpringMVC中文件的上傳與下載詳細(xì)解析

    SpringMVC中文件的上傳與下載詳細(xì)解析

    這篇文章主要介紹了SpringMVC中文件的上傳與下載詳細(xì)解析,在開發(fā)中有遇到文件上傳下載的功能需求,今天就來(lái)說(shuō)一下前后端的實(shí)現(xiàn)和要注意的地方,需要的朋友可以參考下
    2024-01-01
  • Java的LinkedHashSet解析

    Java的LinkedHashSet解析

    這篇文章主要介紹了Java的LinkedHashSet解析,Set接口的哈希表和鏈表實(shí)現(xiàn),具有可預(yù)測(cè)的迭代順序,此實(shí)現(xiàn)與 HashSet的不同之處在于它維護(hù)一個(gè)雙向鏈表,該列表貫穿其所有條目,這個(gè)鏈表定義了迭代順序,需要的朋友可以參考下
    2023-09-09
  • 零基礎(chǔ)寫Java知乎爬蟲之獲取知乎編輯推薦內(nèi)容

    零基礎(chǔ)寫Java知乎爬蟲之獲取知乎編輯推薦內(nèi)容

    上篇文章我們拿百度首頁(yè)做了個(gè)小測(cè)試,今天我們來(lái)個(gè)復(fù)雜的,直接抓取知乎編輯推薦的內(nèi)容,小伙伴們可算松了口氣,終于進(jìn)入正題了,哈哈。
    2014-11-11
  • SpringBoot Druid配置過(guò)程圖解

    SpringBoot Druid配置過(guò)程圖解

    這篇文章主要介紹了SpringBoot Druid配置過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java多線程狀態(tài)及方法實(shí)例解析

    Java多線程狀態(tài)及方法實(shí)例解析

    這篇文章主要介紹了Java多線程狀態(tài)及方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java自定義線程池的實(shí)現(xiàn)示例

    Java自定義線程池的實(shí)現(xiàn)示例

    本文主要介紹了Java自定義線程池的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Java單例模式的深入了解

    Java單例模式的深入了解

    這篇文章主要為大家介紹了Java單例模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01

最新評(píng)論

安龙县| 仲巴县| 铁力市| 宜阳县| 武强县| 金坛市| 榆中县| 河津市| 岳阳县| 深圳市| 六盘水市| 西乡县| 满洲里市| 万山特区| 日土县| 湘乡市| 改则县| 易门县| 天全县| 邻水| 东至县| 新乡市| 新蔡县| 湟源县| 麦盖提县| 沽源县| 京山县| 霸州市| 炉霍县| 平利县| 湾仔区| 吐鲁番市| 陵水| 荥阳市| 新津县| 临邑县| 依兰县| 桐梓县| 榕江县| 清河县| 迁西县|