1. 程式人生 > >zookeeper Watcher API 說明

zookeeper Watcher API 說明

/** * <p>連線Zookeeper</p> * <pre> * [關於connectString伺服器地址配置] * 格式: 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 * 這個地址配置有多個ip:port之間逗號分隔,底層操作 * ConnectStringParser connectStringParser = new ConnectStringParser(“192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181”); * 這個類主要就是解析傳入地址列表字串,將其它儲存在一個ArrayList中 * ArrayList<InetSocketAddress> serverAddresses = new ArrayList<InetSocketAddress>(); * 接下去,這個地址列表會被進一步封裝成StaticHostProvider物件,並且在執行過程中,一直是這個物件來維護整個地址列表。 * ZK客戶端將所有Server儲存在一個List中,然後隨機打亂(這個隨機過程是一次性的),並且形成一個環,具體使用的時候,從0號位開始一個一個使用。 * 因此,Server地址能夠重複配置,這樣能夠彌補客戶端無法設定Server權重的缺陷,但是也會加大風險。 * * [客戶端和服務端會話說明] * ZooKeeper中,客戶端和服務端建立連線後,會話隨之建立,生成一個全域性唯一的會話ID(Session ID)。 * 伺服器和客戶端之間維持的是一個長連線,在SESSION_TIMEOUT時間內,伺服器會確定客戶端是否正常連線(客戶端會定時向伺服器傳送heart_beat,伺服器重置下次SESSION_TIMEOUT時間)。 * 因此,在正常情況下,Session一直有效,並且ZK叢集所有機器上都儲存這個Session資訊。 * 在出現網路或其它問題情況下(例如客戶端所連線的那臺ZK機器掛了,或是其它原因的網路閃斷),客戶端與當前連線的那臺伺服器之間連線斷了, * 這個時候客戶端會主動在地址列表(例項化ZK物件的時候傳入構造方法的那個引數connectString)中選擇新的地址進行連線。 * * [會話時間] * 客戶端並不是可以隨意設定這個會話超時時間,在ZK伺服器端對會話超時時間是有限制的,主要是minSessionTimeout和maxSessionTimeout這兩個引數設定的。 * 如果客戶端設定的超時時間不在這個範圍,那麼會被強制設定為最大或最小時間。 預設的Session超時時間是在2 * tickTime ~ 20 * tickTime * </pre> *
@param connectString Zookeeper服務地址 * @param sessionTimeout Zookeeper連線超時時間 */ public void connectionZookeeper(String connectString, int sessionTimeout){ this.releaseConnection(); try { // ZK客戶端允許我們將ZK伺服器的所有地址都配置在這裡 zk = new ZooKeeper(connectString, sessionTimeout, this
); // 使用CountDownLatch.await()的執行緒(當前執行緒)阻塞直到所有其它擁有CountDownLatch的執行緒執行完畢(countDown()結果為0) connectedSemaphore.await(); } catch ( InterruptedException e ) { LOG.error("連線建立失敗,發生 InterruptedException , e " + e.getMessage(), e); } catch ( IOException e ) { LOG.error(
"連線建立失敗,發生 IOException , e " + e.getMessage(), e ); } }

相關推薦

zookeeper Watcher API 說明

/** * <p>連線Zookeeper</p> * <pre> * [關於connectString伺服器地址配置] * 格式: 192.168.1.1:2181,192.168.1.2:2181,192.1

Apache Curator操作zookeeperAPI使用——watcher

curator在註冊watch事件上,提供了一個usingWatcher方法,使用這個方法註冊的watch事件和預設watch事件一樣,監聽只會觸發一次,監聽完畢後就會銷燬,也就是一次性的。而這個方法有兩種引數可選,一個是zk原生API的Watcher介面的實現類,另一個是Curator提供的Cur

Zookeeper Java API (三) zk節點的通知(Watcher)和回撥(CallBack)

Zk中的通知(Watcher) ZooKeeper中實現對接點的監控,需要實現Watcher介面類,實現其中的process方法 public class WatcherDemo implements Watcher{ public void p

java.lang.NoClassDefFoundError: org/apache/zookeeper/Watcher$Event$KeeperState

create col cycle eve apach sport fig depend frame 七月 29, 2017 10:51:00 上午 org.apache.catalina.core.StandardContext listenerStart嚴重: Excep

zookeeper zkClient api 使用

create jar 顯示 一個 out current inter public exceptio 操作步驟:   一、引入zkclient的jar包(maven方式)   <dependency>     <groupId>com.101tec

Apache Curator操作zookeeperAPI使用

zookeeper 分布式 集群 curator 中間件 curator簡介與客戶端之間的異同點 常用的zookeeper java客戶端: zookeeper原生Java API zkclient Apache curator ZooKeeper原生Java API的不足之處: 在

zookeeper-Watcher

create nod RoCE 客戶 public pub oid child .com   zookeeper的客戶端會從它連接的服務端接收到各種消息,通過註冊實現Watcher接口就可以來處理這些事件。 類圖結構    Watcher   消息處理接口。 public

Zookeeper-watcher機制源碼分析(一)

exc class sso referer 告訴 resp sessionid chm 同學 Watcher的基本流程 ZooKeeper 的 Watcher 機制,總的來說可以分為三個過程:客戶端註冊 Watcher、服務器處理 Watcher 和客戶端回調 Watche

ZooKeeper Watcher

客戶端 包含 事件 eve 客戶端設置 類型 ffffff 才會 訂閱者 ZooKeeper 提供了分布式數據發布/訂閱功能,一個典型的發布/訂閱模型系統定義了一種一對多的訂閱關系,能讓多個訂閱者同時監聽某一個主題對象,當這個主題對象自身狀態變化時,會通知所有訂閱者,使他們

ZooKeeper Java API

state exce 處理 art throws 枚舉類 event exception 類型 org.apache.zookeeper.ZookeeperZookeeper 是在 Java 中客戶端主類,負責建立與 zookeeper 集群的會話, 並提供方法進行操作。o

ZooKeeper Watcher監聽機制(資料變更的通知)(二)(分析)

緊接著上一篇部落格:https://blog.csdn.net/Dongguabai/article/details/82970852 在輸出內容中有這樣兩個結果: 在ZooKeeper中,介面類Watcher用於表示一個標準的事件處理器,其定義了事件通知相關的邏輯,包含Ke

zookeeper java api(2)

    這裡介紹其他的API對zookeeper的操作。 同步方式獲取子節點資料 public static void getChildrenSync() throws KeeperException, InterruptedException {

zookeeper java api(1)

1 Zookeeper安裝以及啟動     這裡我已經進行了安裝,並且啟動了Zookeeper。埠是2182 2 Zookeeper config tickTime=2000 initLimit=10 syncLimit=5 dataDir=D://zook

Zookeeper C API應用示例(3)——配置管理(非同步API

場景描述同:https://blog.csdn.net/qq_41688455/article/details/83780854 服務端程式碼如下: #include <stdio.h> #include <unistd.h> #include <std

Zookeeper C API應用示例(1)——配置管理(同步API

場景描述 服務端監控/configure目錄; 客戶端對/configure目錄讀/寫資料,建立/刪除子節點 服務端: 監控/configure目錄,有資料更新時,輸出/configure中的資料;子節點建立/刪除時,服務程式列出當前的子目錄列表。 程式碼如下: #include &

Zookeeper C API之介面描述

Zookeeper C API介面大部分以zoo_開頭,少量介面以zookeeper_開頭。 除了初始化/銷燬控制代碼、設定日誌等級/日誌流以及一些輔助功能的API外,Zookeeper C API介面分為同步介面和非同步介面:同步介面以zoo_開頭、非同步介面以zoo_a開頭。 1、初

Zookeeper C API應用準備工作

上文 https://blog.csdn.net/qq_41688455/article/details/83659876 中講述瞭如何配置Zookeeper C開發環境,本文將介紹在編譯Zookeeper C客戶端前的準備工作和注意事項。 步驟 1、配置環境變數: 按照上文

Zookeeper C API之回撥函式

監視回撥函式 原型: Typedef void (*watcher_fn)(zhandle_t *zh, int type, int state, const char *path, void *watcherCtx); 監視函式原型的各個引數說明如下:

Zookeeper C API之監視(Watch)、常量和結構體

1、監視(Watch)簡介 Zookeeper C API的宣告和描述定義在檔案include/zookeeper.h中,大部分的常量、結構體宣告也定義在這個檔案中。 Zookeeper所有的讀操作(包括:getData()、getChildren()和exists())度可以設定Watch

Zookeeper C API開發環境配置

Zookeeper C API庫分為單執行緒(zookeeper_st)和多執行緒庫(zookeeper_mt)兩種: 單執行緒庫(zookeeper_st):僅提供非同步API和回撥函式; 多執行緒庫(zookeeper_mt):支援同步API和非同步API以及回撥,包含