一、Curator
- 爲了更好的實現Java操作Zookeeper服務器,後來出現了Curator框架,非常的強大,目前已經是Apache的頂級項目,裏面提供了更多豐富的操作,例如session超時重連、主從選舉、分佈式計數器、分佈式鎖等等適用於各種複雜的zookeeper場景的API封裝。
- maven依賴:
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.4.2</version>
</dependency>
二、Curator框架使用
框架中使用鏈式編程風格,易讀性更強,使用工程方法創建連接對象。使用CuratorFrameworkFactory的倆個靜態工廠方法(參數不同)來實現:
參數1:connectString,連接串;
參數2:retryPolicy,重試連接策略。有四種實現分別爲:ExponentialBackoffRetry、RetryNTimes、RetryOneTimes、RetryUntilElapsed;
參數3:sessionTimeoutMs會話超時時間默認爲60000ms;
參數4:connectionTimeoutMs連接超時事件,默認爲15000ms;注意:對於retryPolicy策略通過一個接口來讓用戶自定義實現。
創建節點create方法,可選鏈式項:
createingParentsIfNeeded(),withMode(),forPath(),withACL()
等;- 刪除節點delete方法,可選鏈式項:
deletingChildrenIfNeeded(),guaranateed(),withVersion(),forPath()
等; - 讀取和修改數據方法,
getData(),setData()
; - 異步綁定回調方法。比如創建節點時綁定一個回調函數,該回調函數可以輸出服務器的狀態碼以及服務器事件類型。還可以加入一個線程池進行優化操作。
- 讀取子節點方法,
getChildren()
; - 判斷節點是否存在方法,
checkExists()
;
三、Curator的監聽
- 如果要使用類似Watcher的監聽功能Curator必須依賴一個jar包,Maven依賴:
<dependency>
<groupId>org.apache.curator</grouId>
<artifactId>curator-recipes</artifactId>
<version>2.4.2</version>
</dependency>
有了這個依賴包,我們使用NodeCache的方式去客戶端示例中註冊一個監聽緩存,然後實現對應的監聽方法即可,這裏我們主要有兩種監聽方式:
1). 監聽節點的新增、修改操作:NodeCacheListener
2). 監聽子節點的新增、修改、刪除操作:PathChildrenCacheListener