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

Zookeeper ZkClient使用介紹

 更新時間:2022年09月02日 15:22:12   作者:悠然予夏  
ZkClient是Github上?個開源的zookeeper客戶端,在Zookeeper原生API接口之上進(jìn)行了包裝,是?個更易用的Zookeeper客戶端,同時,zkClient在內(nèi)部還實(shí)現(xiàn)了諸如Session超時重連、Watcher反復(fù)注冊等功能

前言

接下來,還是從創(chuàng)建會話、創(chuàng)建節(jié)點(diǎn)、讀取數(shù)據(jù)、更新數(shù)據(jù)、刪除節(jié)點(diǎn)等方面來介紹如何使用zkClient 這個zookeeper客戶端

添加依賴:

在pom.xml?件中添加如下內(nèi)容

<dependency>
    <groupId>com.101tec</groupId>
    <artifactId>zkclient</artifactId>
    <version>0.2</version>
</dependency>

1、創(chuàng)建會話

使?ZkClient可以輕松的創(chuàng)建會話,連接到服務(wù)端

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class CreateSession {
    /*
        借助zkClient完成會話創(chuàng)建
     */
    public static void main(String[] args) {
        /**
         * 創(chuàng)建一個zkClient實(shí)例就可以完成連接,完成會話的創(chuàng)建
         * serverString : 服務(wù)器連接地址
         * 注意:zkClient通過對zookeeperAPI內(nèi)部封裝,將這個異步創(chuàng)建會話的過程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("會話被創(chuàng)建了...");
    }
}

2、創(chuàng)建節(jié)點(diǎn)

ZkClient提供了遞歸創(chuàng)建節(jié)點(diǎn)的接口,即其幫助開發(fā)者先完成父節(jié)點(diǎn)的創(chuàng)建,再創(chuàng)建子節(jié)點(diǎn)

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class CreateNote {
    /*
        借助zkClient完成會話創(chuàng)建
     */
    public static void main(String[] args) {
        /**
         * 創(chuàng)建一個zkClient實(shí)例就可以完成連接,完成會話的創(chuàng)建
         * serverString : 服務(wù)器連接地址
         * 注意:zkClient通過對zookeeperAPI內(nèi)部封裝,將這個異步創(chuàng)建會話的過程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("會話被創(chuàng)建了...");
        // 創(chuàng)建節(jié)點(diǎn)
        /**
         *  createParents:是否要創(chuàng)建父節(jié)點(diǎn),如果值為true,則就會遞歸創(chuàng)建節(jié)點(diǎn)
         */
        zkClient.createPersistent("/lg-zkClient/lg-c1", true);
        System.out.println("節(jié)點(diǎn)遞歸創(chuàng)建完成");
    }
}

值得注意的是,在原生態(tài)接口中是無法創(chuàng)建成功的(?節(jié)點(diǎn)不存在),但是通過ZkClient通過設(shè)置createParents參數(shù)為true可以遞歸的先創(chuàng)建父節(jié)點(diǎn),再創(chuàng)建子節(jié)點(diǎn)

3、刪除節(jié)點(diǎn)

ZkClient提供了遞歸刪除節(jié)點(diǎn)的接口,即其幫助開發(fā)者先刪除所有子節(jié)點(diǎn)(存在),再刪除父節(jié)點(diǎn)

package com.lagou.zkClient;
import org.I0Itec.zkclient.ZkClient;
public class DeleteNote {
    /*
        借助zkClient完成會話創(chuàng)建
     */
    public static void main(String[] args) {
        /**
         * 創(chuàng)建一個zkClient實(shí)例就可以完成連接,完成會話的創(chuàng)建
         * serverString : 服務(wù)器連接地址
         * 注意:zkClient通過對zookeeperAPI內(nèi)部封裝,將這個異步創(chuàng)建會話的過程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("會話被創(chuàng)建了...");
        // 遞歸刪除子節(jié)點(diǎn)
        String path = "/lg-zkClient/lg-c1";
        zkClient.createPersistent(path+"/c11");
        zkClient.deleteRecursive(path);
        System.out.println("遞歸刪除成功");
    }
}

結(jié)果表明ZkClient可直接刪除帶子節(jié)點(diǎn)的?節(jié)點(diǎn),因?yàn)槠涞讓酉葎h除其所有子節(jié)點(diǎn),然后再刪除父節(jié)點(diǎn)

4、獲取子節(jié)點(diǎn)

package com.lagou.zkClient;
import org.I0Itec.zkclient.IZkChildListener;
import org.I0Itec.zkclient.ZkClient;
import java.util.List;
public class Get_NoteChildren {
    /*
        借助zkClient完成會話創(chuàng)建
     */
    public static void main(String[] args) throws InterruptedException {
        /**
         * 創(chuàng)建一個zkClient實(shí)例就可以完成連接,完成會話的創(chuàng)建
         * serverString : 服務(wù)器連接地址
         * 注意:zkClient通過對zookeeperAPI內(nèi)部封裝,將這個異步創(chuàng)建會話的過程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("會話被創(chuàng)建了...");
        // 獲取子節(jié)點(diǎn)列表
        List<String> children = zkClient.getChildren("/lg-zkClient");
        System.out.println(children);
        // 注冊監(jiān)聽對象
        /*
            客戶端可以對一個不存在的節(jié)點(diǎn)進(jìn)行子節(jié)點(diǎn)變更的監(jiān)聽
            只要該節(jié)點(diǎn)的子節(jié)點(diǎn)的列表發(fā)生變化,或者該節(jié)點(diǎn)本身被創(chuàng)建或則刪除,都會觸發(fā)監(jiān)聽
         */
        zkClient.subscribeChildChanges("/lg-zkClient-get", new IZkChildListener() {
            /**
             * @param list : 變化后的子節(jié)點(diǎn)列表
             */
            @Override
            public void handleChildChange(String parentPath, List<String> list) throws Exception {
                System.out.println(parentPath + "的子節(jié)點(diǎn)列表發(fā)生了變化,變化后的子節(jié)點(diǎn)列表為" + list);
            }
        });
        // 測試
        zkClient.createPersistent("/lg-zkClient-get");
        Thread.sleep(1000);
        zkClient.createPersistent("/lg-zkClient-get/c1");
        Thread.sleep(1000);
    }
}

結(jié)果表明:客戶端可以對?個不存在的節(jié)點(diǎn)進(jìn)行子節(jié)點(diǎn)變更的監(jiān)聽。?旦客戶端對?個節(jié)點(diǎn)注冊了子節(jié)點(diǎn)列表變更監(jiān)聽之后,那么當(dāng)該節(jié)點(diǎn)的子節(jié)點(diǎn)列表發(fā)生變更時,服務(wù)端都會通知客戶端,并將最新的子節(jié)點(diǎn)列表發(fā)送給客戶端,該節(jié)點(diǎn)本身的創(chuàng)建或刪除也會通知到客戶端。

5、獲取數(shù)據(jù)(節(jié)點(diǎn)是否存在、更新、刪除)

package com.lagou.zkClient;
import org.I0Itec.zkclient.IZkDataListener;
import org.I0Itec.zkclient.ZkClient;
public class Note_API {
    /*
        借助zkClient完成會話創(chuàng)建
     */
    public static void main(String[] args) throws InterruptedException {
        /**
         * 創(chuàng)建一個zkClient實(shí)例就可以完成連接,完成會話的創(chuàng)建
         * serverString : 服務(wù)器連接地址
         * 注意:zkClient通過對zookeeperAPI內(nèi)部封裝,將這個異步創(chuàng)建會話的過程同步化了
         */
        ZkClient zkClient = new ZkClient("127.0.0.1:2181");
        System.out.println("會話被創(chuàng)建了...");
        // 創(chuàng)建節(jié)點(diǎn)
        /**
         *  createParents:是否要創(chuàng)建父節(jié)點(diǎn),如果值為true,則就會遞歸創(chuàng)建節(jié)點(diǎn)
         */
        zkClient.createPersistent("/lg-zkClient/lg-c1", true);
        System.out.println("節(jié)點(diǎn)遞歸創(chuàng)建完成");
        // 判斷節(jié)點(diǎn)是否存在
        String path = "/lg-zkClient-Ep";
        boolean exists = zkClient.exists(path);
        if (!exists) {
            // 創(chuàng)建臨時節(jié)點(diǎn)
            zkClient.createEphemeral(path, "123");
        }
        // 讀取節(jié)點(diǎn)內(nèi)容
        Object o = zkClient.readData(path);
        System.out.println(o);
        // 注冊監(jiān)聽
        zkClient.subscribeDataChanges(path, new IZkDataListener() {
            /*
                當(dāng)節(jié)點(diǎn)數(shù)據(jù)內(nèi)容發(fā)生變化時,執(zhí)行的回調(diào)方法
                s : path
                o : 變化后的節(jié)點(diǎn)內(nèi)容
             */
            @Override
            public void handleDataChange(String s, Object o) throws Exception {
                System.out.println(s + ":該節(jié)點(diǎn)內(nèi)容被更新,更新后的內(nèi)容:" + o);
            }
            /*
                當(dāng)節(jié)點(diǎn)被刪除時,會執(zhí)行的回調(diào)方法
                s : path
             */
            @Override
            public void handleDataDeleted(String s) throws Exception {
                System.out.println(s + ":該節(jié)點(diǎn)被刪除");
            }
        });
        // 更新節(jié)點(diǎn)內(nèi)容
        zkClient.writeData(path, "456");
        Thread.sleep(2000);
        // 刪除節(jié)點(diǎn)
        zkClient.delete(path);
        Thread.sleep(2000);
    }
}

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

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式小結(jié)

    SpringBoot實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式小結(jié)

    這里用到的數(shù)據(jù)預(yù)熱,就是在項(xiàng)目啟動時將一些數(shù)據(jù)量較大的數(shù)據(jù)加載到緩存中(筆者這里用的Redis),那么在項(xiàng)目啟動有哪些方式可以實(shí)現(xiàn)數(shù)據(jù)預(yù)熱呢,本文就來給大家講講幾種實(shí)現(xiàn)數(shù)據(jù)預(yù)熱的方式,需要的朋友可以參考下
    2023-09-09
  • Java多態(tài)(動力節(jié)點(diǎn)Java學(xué)院整理)

    Java多態(tài)(動力節(jié)點(diǎn)Java學(xué)院整理)

    多態(tài)是指允許不同類的對象對同一消息做出響應(yīng)。即同一消息可以根據(jù)發(fā)送對象的不同而采用多種不同的行為方式。接下來通過本文給大家介紹java多態(tài)相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧
    2017-04-04
  • Java使用OSS實(shí)現(xiàn)上傳文件功能

    Java使用OSS實(shí)現(xiàn)上傳文件功能

    這篇文章主要為大家詳細(xì)介紹了Java如何使用OSS實(shí)現(xiàn)上傳文件功能,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以了解一下
    2024-01-01
  • Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案

    Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案

    這篇文章主要介紹了Spring Boot Mail QQ企業(yè)郵箱無法連接解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn)

    SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot指標(biāo)監(jiān)控功能實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • 實(shí)例詳解Java中ThreadLocal內(nèi)存泄露

    實(shí)例詳解Java中ThreadLocal內(nèi)存泄露

    這一篇文章我們來分析一個Java中ThreadLocal內(nèi)存泄露的案例。分析問題的過程比結(jié)果更重要,理論結(jié)合實(shí)際才能徹底分析出內(nèi)存泄漏的原因。
    2016-08-08
  • Java如何實(shí)現(xiàn)定時任務(wù)

    Java如何實(shí)現(xiàn)定時任務(wù)

    這篇文章主要介紹了Java如何實(shí)現(xiàn)定時任務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Spring源碼完美導(dǎo)入IDEA的過程

    Spring源碼完美導(dǎo)入IDEA的過程

    正值春節(jié)假期,小伙伴私信我idea導(dǎo)入spring源碼的過程,今天抽空給大家整理一篇教程幫助大家學(xué)習(xí)Spring源碼完美導(dǎo)入IDEA的詳細(xì)過程,感興趣的朋友一起看看吧
    2022-02-02
  • java懶惰評估實(shí)現(xiàn)方法

    java懶惰評估實(shí)現(xiàn)方法

    這篇文章主要介紹了java懶惰評估如何實(shí)現(xiàn)的相關(guān)內(nèi)容及實(shí)例,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-05-05
  • 解決myBatis返回integer值的問題

    解決myBatis返回integer值的問題

    這篇文章主要介紹了解決myBatis返回integer值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11

最新評論

郯城县| 高邮市| 故城县| 乐昌市| 西宁市| 三台县| 张掖市| 湘阴县| 雅安市| 平果县| 日土县| 兴文县| 万盛区| 丰原市| 温宿县| 乡城县| 日照市| 涡阳县| 汽车| 崇州市| 瑞金市| 常州市| 科技| 收藏| 榆社县| 蕲春县| 沙河市| 吴旗县| 三门峡市| 元朗区| 凭祥市| 吴江市| 巴中市| 连江县| 赤水市| 汪清县| 武冈市| 宾川县| 平果县| 会泽县| 安达市|