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

java連接zookeeper的3種方式小結(jié)

 更新時間:2021年11月11日 09:02:39   作者:碼眼  
這篇文章主要介紹了java連接zookeeper的3種方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java連接zookeeper3種方式

1、使用zookeeper原始api

public class Demo { 
    private static String ip = "192.168.0.101:2181"; 
    private static int  session_timeout = 40000; 
    private static CountDownLatch latch = new CountDownLatch(1); 
    public static void main(String[] args) throws Exception {
        ZooKeeper zooKeeper = new ZooKeeper(ip, session_timeout, new Watcher() {
            @Override
            public void process(WatchedEvent watchedEvent) {
                if(watchedEvent.getState() == Event.KeeperState.SyncConnected) {
                    //確認(rèn)已經(jīng)連接完畢后再進行操作
                    latch.countDown();
                    System.out.println("已經(jīng)獲得了連接");
                }
            }
        });
 
        //連接完成之前先等待
        latch.await();
        ZooKeeper.States states = zooKeeper.getState();
        System.out.println(states);
    }
}

打印:

如果打印出來的狀態(tài)為 CONNECTED 則表示連接成功

2、使用ZkClient客戶端連接,這種連接比較簡單

public class ZkClientTest { 
    private static String ip = "192.168.0.101:2181"; 
    private static int  session_timeout = 40000; 
    public static void main(String[] args) {
        ZkClient zkClient = new ZkClient(ip,session_timeout);
        System.out.println(zkClient.getChildren("/"));
    }
}

打印:

3、使用curator連接

 
public class CuratorDemo {  
    //ZooKeeper服務(wù)地址
    private static final String SERVER = "192.168.0.101:2181";
 
    //會話超時時間
    private static final int SESSION_TIMEOUT = 30000;
 
    //連接超時時間
    private static final int CONNECTION_TIMEOUT = 5000;
 
    /**
     * baseSleepTimeMs:初始的重試等待時間
     * maxRetries:最多重試次數(shù)
     *
     *
     * ExponentialBackoffRetry:重試一定次數(shù),每次重試時間依次遞增
     * RetryNTimes:重試N次
     * RetryOneTime:重試一次
     * RetryUntilElapsed:重試一定時間
     */
    private static final RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);  
    public static void main(String[] args) throws Exception {
        //創(chuàng)建 CuratorFrameworkImpl實例
        CuratorFramework client = CuratorFrameworkFactory.newClient(SERVER, SESSION_TIMEOUT, CONNECTION_TIMEOUT, retryPolicy);
 
        //啟動
        client.start(); 
        System.out.println("連接成功!");
        Object o = client.getChildren().forPath("/");
        System.out.println(o);
    } 
}

打印:

Java集成zookeeper筆記

一、引入zookeeper-3.4.5.jar(原生zk包)

slf4j.jar即可,其他還有zkClient和Curator,其中Curator封裝的zk客戶端組件最好用。

二、手寫ZookeeperBase.java

少廢話,上代碼:

簡單的創(chuàng)建連接和增刪改查操作:

public class ZookeeperBase{
	//zk集群地址(端口號為客戶端端口號)
	private static final String CONNECT_ADDR = "192.168.241.127:2181,192.168.241.128:2181,192.168.241.129:2181";	
	//session 超時時間,單位毫秒
	private static final int SESSION_OUTTIME = 5000;	
	//用于阻塞程序執(zhí)行,直到zk成功連接后再發(fā)送繼續(xù)執(zhí)行信號,因為zk建立連接是異步的,阻塞是防止程序在zk成功連接前被調(diào)用。
	private static final CountDownLatch contectedSemaphore = new CountDownLatch (1);	
	public static void main(String[] args)throws Exception{
		Zookeeper zk = new Zookeeper(CONNECT_ADDR,SESSION_OUTTIME,new Watcher()){
			@override
			public void process(WatcherEvent event){  //WatcherEvent為觀察者監(jiān)聽事件
			
				//獲取事件狀態(tài)(與客戶端連接狀態(tài)相關(guān))
				/*
				* KeeperState:Disconneced        連接失敗 		 
				* KeeperState:SyncConnected	 連接成功	 		 
				* KeeperState:AuthFailed         認(rèn)證失敗		 
				* KeeperState:Expired            會話過期
				*/
				KeeperState keeperState = event.getState();
				
				//獲取事件類型(與zknode相關(guān))
				/*
				* EventType:NodeCreated            節(jié)點創(chuàng)建		 
				* EventType:NodeDataChanged        節(jié)點的數(shù)據(jù)變更		 
				* EventType:NodeChildrentChanged   子節(jié)點下的數(shù)據(jù)變更		 
				* EventType:NodeDeleted            節(jié)點刪除
				* EventType:None                   剛連接什么都沒做
				*/
				EventType eventType  = event.getType();
				
				//成功建立連接(固定寫法)
				if(KeeperState.SyncConnected == keeperState){
					if(EventType.None == eventType){
						//發(fā)送信號讓程序繼續(xù)執(zhí)行
						contectedSemaphore.countDown();
					}
				}				
			}
			
			//阻塞程序執(zhí)行
			contectedSemaphore.await();
			//創(chuàng)建節(jié)點
			//同步創(chuàng)建
			String newNode = zk.create("/testRoot","data".getBytes(),ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);
			/*
			*參數(shù)1:節(jié)點路徑:/testRoot,原生api不允許遞歸創(chuàng)建節(jié)點,即沒有父節(jié)點不允許直接連帶父子節(jié)點一起創(chuàng)建。創(chuàng)建節(jié)點是要寫全路徑,例如:/testRoot/children。
			*參數(shù)2:節(jié)點內(nèi)容:內(nèi)容類型為字節(jié)數(shù)組,不支持存儲序列化對象,例如不支持將java對象序列化為json存儲,但可以使用java序列化框架,如hession或kyso。
			*參數(shù)3:權(quán)限控制:在對權(quán)限要求不嚴(yán)格情況下都使用OPEN_ACL_UNSAFE開放權(quán)限即可。
			*參數(shù)4:節(jié)點類型:提供了四種類型。
			*PERSISTENT 持久化節(jié)點
			*PERSISTENT SEQUENTIAL 持久順序節(jié)點
			*EPHEMERAL 臨時節(jié)點
			*EPHEMERAL SEQUENTIAL 臨時順序節(jié)點
			*/
		};	
	} 	
}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java學(xué)生信息管理系統(tǒng)MVC架構(gòu)詳解

    java學(xué)生信息管理系統(tǒng)MVC架構(gòu)詳解

    這篇文章主要為大家詳細(xì)介紹了java學(xué)生信息管理系統(tǒng)MVC架構(gòu)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java反射獲取class對象方式解析

    Java反射獲取class對象方式解析

    這篇文章主要介紹了Java反射獲取class對象方式解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java的無參構(gòu)造函數(shù)用法實例分析

    Java的無參構(gòu)造函數(shù)用法實例分析

    這篇文章主要介紹了Java的無參構(gòu)造函數(shù)用法,結(jié)合實例形式分析了java無參構(gòu)造函數(shù)基本原理、用法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09
  • java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹

    java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹

    這篇文章主要為大家詳細(xì)介紹了java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java中的自定義異常實現(xiàn)方式

    Java中的自定義異常實現(xiàn)方式

    這篇文章主要介紹了Java中的自定義異常實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • JavaWeb中Servlet的生命周期及線程安全問題詳解

    JavaWeb中Servlet的生命周期及線程安全問題詳解

    這篇文章主要介紹了JavaWeb中Servlet的生命周期及線程安全問題詳解,Servlet?生命周期可被定義為從創(chuàng)建直到毀滅的整個過程,Servlet體系結(jié)構(gòu)是建立在Java多線程機制之上的,它的生命周期是由Web容器負(fù)責(zé)的,需要的朋友可以參考下
    2024-01-01
  • JavaWeb文件上傳下載實例講解(酷炫的文件上傳技術(shù))

    JavaWeb文件上傳下載實例講解(酷炫的文件上傳技術(shù))

    在Web應(yīng)用系統(tǒng)開發(fā)中,文件上傳功能是非常常用的功能,今天來主要講講JavaWeb中的文件上傳功能的相關(guān)技術(shù)實現(xiàn),本文給大家介紹的非常詳細(xì),具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-11-11
  • idea設(shè)置JVM運行參數(shù)的幾種方式

    idea設(shè)置JVM運行參數(shù)的幾種方式

    對JVM運行參數(shù)進行修改是JVM性能調(diào)優(yōu)的重要手段,本文主要介紹了idea設(shè)置JVM運行參數(shù)的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java全面細(xì)致講解Cookie與Session及kaptcha驗證碼的使用

    Java全面細(xì)致講解Cookie與Session及kaptcha驗證碼的使用

    web開發(fā)階段我們主要是瀏覽器和服務(wù)器之間來進行交互。瀏覽器和服務(wù)器之間的交互就像人和人之間進行交流一樣,但是對于機器來說,在一次請求之間只是會攜帶著本次請求的數(shù)據(jù)的,但是可能多次請求之間是會有聯(lián)系的,所以提供了會話機制
    2022-06-06
  • idea根據(jù)實體類生成數(shù)據(jù)庫表的流程步驟

    idea根據(jù)實體類生成數(shù)據(jù)庫表的流程步驟

    在開發(fā)的時候,經(jīng)常會遇到數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計無法滿足業(yè)務(wù)的需求,需要去改動數(shù)據(jù)庫表,我們就需要去設(shè)計數(shù)據(jù)庫的字段,然后又回來增加實體類里的字段,這樣很麻煩,所以本文給大家介紹了idea根據(jù)實體類生成數(shù)據(jù)庫表的流程步驟,需要的朋友可以參考下
    2024-12-12

最新評論

洞口县| 牡丹江市| 原阳县| 桦川县| 永和县| 积石山| 搜索| 大化| 焦作市| 新巴尔虎左旗| 荔浦县| 临颍县| 涿州市| 吴忠市| 绵阳市| 仙居县| 山东| 玉林市| 安平县| 上高县| 玉树县| 句容市| 灵台县| 兴化市| 虞城县| 云龙县| 娄底市| 襄汾县| 仙游县| 连州市| 洛隆县| 酉阳| 乡宁县| 望江县| 蓬莱市| 新竹县| 四子王旗| 景德镇市| 玉门市| 正定县| 夏津县|