Curator架構的目的是減少使用者的複雜度,畢竟原生的Zookeeper難以使用。
這裡舉一個使用例子。
第一步:建立連接配接
// 以下代碼與192.168.1.101:2181建立了連接配接
CuratorFramework client = CuratorFrameworkFactory.newClient("192.168.1.101:2181", new ExponentialBackoffRetry(1000, 3));
client.start();
這裡的ExponentialBackoffRetry的含義是指數增長的重試間隔。根據這裡的參數,第一次失敗重試休息1000毫秒,第二次重試休息1000毫秒~3000毫秒,第三次失敗重試休息1000毫秒~7000毫秒。這樣指數增長。
第二步:監聽節點下的資料
PathChildrenCache cache = new PathChildrenCache(client, "/test", true);
cache.start();
cache.getListenable().addListener(new MyListener(observer));
這樣就可以監聽test節點下的所有節點了。
第三步:實作事件處理
實作事件處理,隻需實作PathChildrenCacheListener接口即可,示例如下。
public class MyListener implements PathChildrenCacheListener {
@Override
public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
switch (event.getType()) {
case CHILD_ADDED: {
// 新的節點建立了
...
break;
}
case CHILD_UPDATED: {
// 節點資料更新了
...
break;
}
case CHILD_REMOVED: {
// 節點删掉了
...
break;
}
}
}
}