1.zookeeper的時計
1)、モニタとして理解することができるZooKeeperの中の全ての読み出し動作を- のgetData() 、GetChildrenメソッド()及び(EXISTS) - 選択されたモニターに設定することができます
レンジ2)時計
イベントを作成し、イベントを削除し、イベントを変更すると、子イベント
3)時計を削除します。
私たちは、removeWatchesを呼び出してのznodeの時計に登録削除することができます
2.watchesサンプル(javaの)
パブリッククラスZKDemoがウォッチャーを実装{
プライベート静的たCountDownLatchたCountDownLatch =新しいたCountDownLatch(1)。
プライベート静的ZooKeeperの飼育係。
公共の静的な無効メイン(文字列[]引数)例外{スロー
connetionZK(「」)を、
閉じる();
}
パブリック静的ボイドconnetionZK(文字列ZK)にIOException、KeeperException、InterruptedExceptionある{スロー
//飼育係的IP:端口
= "192.168.10.150:2181"文字列パスを、
飼育係=新規のZooKeeper(パス、×1000 20、新しいZKDemo())。
//创建节点并给值
// createZnode(飼育係、 "/試験"、 "TEST1" .getBytes())。
//子节点列表更改
// createZnodeChild(飼育係、 "/試験"、 "TEST2" .getBytes())。
CreateZnodeAndChanged //(ZooKeeperの、 "/テスト"、 "Test3は" .getBytes());
//作成および削除ノード
// createZnodeAndDelete(ZooKeeperの、 "/テスト"、 "TEST4" .getBytes());
//データノード削除ウォッチ下
// createZnodeAndRMDataWatch(ZooKeeperの、 "/テスト"、 "TEST5" .getBytes());
//時計を削除する次の子ノードは
// createZnodeAndRMChildWatch(飼育係、 "/テスト "、 "TEST6" .getBytes());
countDownLatch.await(); //プログラムはブロッキング続ける
}
/ **
*ノード値と作成
*の@paramのZooKeeperのを
* @paramパス
* @paramデータ
* /
パブリック静的ボイドcreateZnode(ZooKeeperのZooKeeperの、文字列パス、バイト[]データ){
//パスノード、ノード値、ウォッチ、タイプの作成
を試して{
zooKeeper.exists(パス、真の); ZooKeeperの新しい新しい際//デフォルトウォッチャー、ここではデフォルトの設定を参照(パスは、* 20 1000、新新ZKDemo())ウォッチャー
zooKeeper.create(パス、データ、ZooDefs.Ids。 OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
}キャッチ(KeeperException E){
e.printStackTrace();
}キャッチ(InterruptedExceptionあるE){
e.printStackTrace();
}
}
/ **
*子のリストは変更ノード
* @paramのZooKeeperの
*パス@param
* @paramデータ
* /
パブリック静的な無効createZnodeChild(ZooKeeperのZooKeeperの、文字列のパス、バイト[]データ){
//パスノード、ノード値、ウォッチ、タイプの作成
を試して{
zooKeeper.exists(パス、真の); ZooKeeperの新しい新しい際//デフォルトウォッチャー、ここではデフォルトの設定を参照(パスは、* 20 1000、新新ZKDemo())ウォッチャー
zooKeeper.create(パス、データ、ZooDefs.Ids。 OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
zooKeeper.getChildren(パス、真の);
zooKeeper.create(パス+ "/ child1の"、 "子" .getBytes()、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
}キャッチ(KeeperException E){
e.printStackTrace();
}キャッチ(InterruptedExceptionあるE){
e.printStackTrace();
}
}
/ **
*データ・ノードを修正
* @paramのZooKeeperの
* @paramパス
* @paramデータ
* /
静的ボイドは公共createZnodeAndChanged(ZooKeeperのZooKeeperの、文字列のパスを、バイト[]データ){
//パスノード、ノード値、ウォッチ、の種類を作成
試し{
(真へのパス、)zooKeeper.existsを; //デフォルトのウォッチャー、どこデフォルトそれは新しいのZooKeeperを参照(パス、* 1000年20 、新しいZKDemo())ウォッチャセットするとき
zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
(真へのパス、)zooKeeper.exists;
のZooKeeper .setData(パス、 "変更" .getBytes()、-1);
}キャッチ(KeeperException E){
e.printStackTrace();
}キャッチ(InterruptedExceptionあるE){
e.printStackTrace();
}
}
/ **
*作成ノードを削除する
* @paramのZooKeeperの
* @paramパス
@paramデータ*
* /
パブリック静的な無効createZnodeAndDelete(ZooKeeperのZooKeeperの、文字列のパス、バイト[]データは){
//パスノード、ノード値、ウォッチ、のタイプの作成
試し{
//デフォルトを使用; zooKeeper.exists(真のパスを、)ウォッチャーは、ここではデフォルトの設定を参照したときに、ウォッチャーのZooKeeper新新(パス、* 20が1000で、新しい新ZKDemo())
zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
zooKeeper.exists(真のパス);
zooKeeper.delete(パス、-1);
}キャッチ(KeeperException E){
e.printStackTrace();
}キャッチ(InterruptedExceptionあるE){
e.printStackTrace();
}
}
/ **
*データノードの下ウォッチ削除
* @paramのZooKeeperを
@param路*
* @paramデータ
* /
パブリック静的ボイドcreateZnodeAndRMDataWatch(ZooKeeperのZooKeeperの、文字列パス、バイト[]データ){
//パスのノード、ノード値、時計の種類作成する
試み{
zooKeeper.exists(真のパスを、); //デフォルトのウォッチャー、ここときウォッチャーのZooKeeper新新(パス、* 20 1000、新新ZKDemo())デフォルト設定を指し
; // zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT)
zooKeeper.setData(パス、 "ウォッチ1" .getBytes()、-1);
zKDemo zkDemo新しい新しいzKDemo =();
バイト[]バイト= zooKeeper.getData(パス、zkDemo、新しい新しいスタット());
のSystem.out.println (新しい新しい文字列(バイト));
zooKeeper.removeWatches(パス、真のzkDemo、WatcherType.Data);
}キャッチ(KeeperException E){
e.printStackTrace();
}キャッチ(InterruptedExceptionある電子){
e.printStackTrace();
}
}
/ **
*子节点下删除時計
* @paramの飼育係
* @paramパス
* @paramデータ
* /
パブリック静的ボイドcreateZnodeAndRMChildWatch(ZooKeeperの飼育係、文字列パス、バイト[]データ){
//创建节点路径、节点值、ウォッチは、类型
{しようと
ZKDemo zkDemo =新しいZKDemoを();
zooKeeper.create(パス、データ、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT); //
zooKeeper.create(パス+ "/ child2の"、 "child2の" .getBytes()、ZooDefs.Ids.OPEN_ACL_UNSAFE、CreateMode.PERSISTENT)。 //
zooKeeper.setData(パス、データ、-1)。
zooKeeper.getChildren(パス、zkDemo)。
zooKeeper.removeWatches(パス、zkDemo、WatcherType.Children、TRUE)。
}キャッチ(KeeperException電子){
e.printStackTrace();
}キャッチ(InterruptedExceptionある電子){
e.printStackTrace();
}
}
/ **
*关闭ZK
* /
パブリック静的ボイド近い(){
{しようと
{(飼育係= nullで!)場合
zooKeeper.close();
}
}キャッチ(InterruptedExceptionある電子){
e.printStackTrace();
}
}
プロセスボイドパブリック(WatchedEventイベント){
countDownLatch.countDown();
IF(Event.KeeperState.SyncConnected event.getState ==()){//接続状態
のSystem.out.println( "接続状態");
}そうIF( Event.KeeperState.Disconnected == event.getState()){// OFF状態
のSystem.out.println( "OFFのZooKeeper");
}そうIF(Event.KeeperState.AuthFailed event.getState ==()){ //認証失敗
するSystem.out.println( "認証失敗");
}そうIF(Event.KeeperState.ConnectedReadOnly event.getState ==()){//読み取り専用接続
するSystem.out.println(「接続読み取り専用");
}そうでない場合には(Event.KeeperState.SaslAuthenticated event.getState ==は()){//利用権のSASL ZooKeeperの動作実行
のSystem.out.printlnを(" ZooKeeperの操作)が」SASL認証権限を行います。
}そうであれば(Event.KeeperState.Expired == event.getState()){//服务器失效
するSystem.out.println( "服务器失效")。
}そうであれば(Event.KeeperState.Closed == event.getState()){//客户端关闭
のSystem.out.println( "客户端关闭")。
} {他
のSystem.out.println( "未知")。
}
のSystem.out.println( "**************************************")。
IF(Event.EventType.None == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.NodeCreated == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.NodeDeleted == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.NodeDataChanged == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.NodeChildrenChanged == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.DataWatchRemoved == event.getType()){
System.out.printlnは(event.getType())。
}もしそうでなければ(Event.EventType.ChildWatchRemoved == event.getType()){
System.out.printlnは(event.getType())。
} {他
のSystem.out.println( "未知")。
}
のSystem.out.println( "######################################")。
}
}