zookeeper原生API及Curator的使用

2021-08-22 08:43:21 字數 3351 閱讀 3541

原生api

節點特性

/**

* zookeeper節點特性

*/public

class

zkdemo

}});

countdownlatch.await();

system.out.println(zookeeper.getstate());

//節點路徑 值 acl(節點的操作許可權) 節點的型別,持久化節點

zookeeper.create("/zk-taofut","0".getbytes(), zoodefs.ids.open_acl_unsafe, createmode.persistent);

thread.sleep(1000);

stat stat=new stat();

//得到當前節點的值

byte bytes=zookeeper.getdata("/zk-taofut",null,stat);

system.out.println(new string(bytes));

//修改節點的值

zookeeper.setdata("/zk-taofut","1".getbytes(),stat.getversion());

//得到當前節點的值

byte bytes1=zookeeper.getdata("/zk-taofut",null,stat);

system.out.println(new string(bytes1));

//刪除當前節點

zookeeper.delete("/zk-taofut",stat.getversion());

zookeeper.close();

system.in.read();

} catch (exception e)

}}

事件監聽

/**

* 監聽事件:watcher只會監聽一次事件,如果需要一直監聽,那麼要迴圈了

*/public

class

watcherdemo

}});

countdownlatch.await();

//節點路徑 值 acl(節點的操作許可權) 節點的型別,持久化節點

zookeeper.create("/zk-taofut","0".getbytes(), zoodefs.ids.open_acl_unsafe, createmode.persistent);

//繫結事件條件:exists getdata getchildren

//通過exists繫結事件

stat stat=zookeeper.exists("/zk-taofut", new watcher() catch (keeperexception e) catch (interruptedexception e)

}});

//通過事務-修改來觸發監聽事件

stat=zookeeper.setdata("/zk-taofut","2".getbytes(),stat.getversion());

thread.sleep(1000);

zookeeper.delete("/zk-taofut",stat.getversion());

system.in.read();

} catch (exception e)

}}

curator的使用

節點特性

/**

* zookeeper節點特性

*/public

class

curatordemo

}

事件監聽

/**

* 事件監聽

* pathchildcache 監聽乙個節點下,子節點的建立、刪除、更新

* nodecache 監聽乙個節點的建立和更新

* treecathe 綜合pathchildcache和nodecache的特性

*/public

class

curatorwatcherdemo

/*** pathchildcache 監聽乙個節點下,子節點的建立、刪除、更新

*@param curatorframework

*@param path

*@throws exception

*/public

static

void

addlistenerwithpathchildcache(curatorframework curatorframework,string path) throws exception

};pathchildrencache.getlistenable().addlistener(pathchildrencachelistener);

pathchildrencache.start(pathchildrencache.startmode.normal);

}/**

* nodecache 監聽乙個節點的建立和更新

*@param curatorframework

*@param path

*@throws exception

*/public

static

void

addlistenerwithnodecache(curatorframework curatorframework,string path) throws exception

};nodecache.getlistenable().addlistener(nodecachelistener);

nodecache.start();

}/**

* treecathe 綜合pathchildcache和nodecache的特性

*@param curatorframework

*@param path

*@throws exception

*/public

static

void

addlistenerwithtreecache(curatorframework curatorframework,string path) throws exception

};treecache.getlistenable().addlistener(treecachelistener);

treecache.start();

}}

zookeeper原生API操作

zookeeper 學習 watcher 事件 author kevin public class zookeeperbase 進行阻塞 connectedsemaphore.await system.out.println string path testroot string data 測試資料...

常用的Xenomai 原生API

常用的xenomai 原生api 1 任務管理 xenomai 本身提供的一系列多任務排程機制,主要有以下一些函式 int rt task create rt task task,const char name,int stksize,int prio,int mode 任務的建立 int rt t...

原生Django常用API 引數

建立虛擬環境 mkvirtualenv django py3 1.11 p python3安裝django pip install django 1.11.111.建立工程 django admin startproject 工程名稱2.建立子應用 3.執行 python manage.py run...