memn 发表于 2015-11-21 15:12:13

zookeeper服务器Java代码和测试命令

package zktest;

import java.util.concurrent.CountDownLatch;

import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.ZooKeeper.States;
import org.apache.zookeeper.data.Stat;

public class Conf {
public static void waitUntilConnected(ZooKeeper zooKeeper,
CountDownLatch connectedLatch) {
if (States.CONNECTING == zooKeeper.getState()) {
try {
connectedLatch.await();
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
}
}

static class ConnectedWatcher implements Watcher {

private CountDownLatch connectedLatch;

ConnectedWatcher(CountDownLatch connectedLatch) {
this.connectedLatch = connectedLatch;
}

@Override
public void process(WatchedEvent event) {
if (event.getState() == KeeperState.SyncConnected) {
connectedLatch.countDown();
}
}
}

static public Conf Instance() {
if (static_ == null) {
static_ = new Conf();
}
return static_;
}

public boolean Init(String hostports, int times) {
try {
CountDownLatch connectedLatch = new CountDownLatch(1);
Watcher watcher = new ConnectedWatcher(connectedLatch);
zk = new ZooKeeper(hostports, times, watcher);
System.out.println("zk:" + zk.toString());
waitUntilConnected(zk, connectedLatch);
System.out.println("safsa");
System.out.println("safsa");

// zk.create("/home/hadoop/testRootPath", "testRootData".getBytes(),
// Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
// zk.create("/home/hadoop/testRootPath/testChildPathOne",
// "testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,
// CreateMode.PERSISTENT);
// System.out.println(new
// String(zk.getData("/home/hadoop/testRootPath", false,
// null)));
// System.out.println(zk.getChildren("/home/hadoop/testRootPath",
// true));
// zk.setData("/home/hadoop/testRootPath/testChildPathOne",
// "modifyChildDataOne".getBytes(), -1);
// System.out.println("dir node state:[" +
// zk.exists("/home/hadoop/testRootPath", true)
// + "]");
// zk.create("/testRootPath/testChildPathTwo",
// "testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,
// CreateMode.PERSISTENT);
// System.out.println(new String(zk.getData(
// "/home/hadoop/testRootPath/testChildPathTwo", true, null)));
// // zk.delete("/home/hadoop/testRootPath/testChildPathTwo", -1);
// // zk.delete("/home/hadoop/testRootPath/testChildPathOne", -1);
// // zk.delete("/home/hadoop/testRootPath", -1);
// zk.close();
//
zk.create("/hu", ("hello1"+"\n"+"hello2").getBytes(),
Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//zk.create("/testRootPath", "testRootData".getBytes(),
//Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
//// 创建一个子目录节点
//zk.create("/testRootPath/testChildPathOne",
//"testChildDataOne".getBytes(), Ids.OPEN_ACL_UNSAFE,
//CreateMode.PERSISTENT);
System.out.println(new String(zk.getData("/testRootPath", false,
null)));
// 取出子目录节点列表
System.out.println(zk.getChildren("/testRootPath", true));
// 修改子目录节点数据
zk.setData("/testRootPath/testChildPathOne",
"modifyChildDataOne".getBytes(), -1);
System.out.println("目录节点状态:[" + zk.exists("/testRootPath", true)
+ "]");
// 创建另外一个子目录节点
//zk.create("/testRootPath/testChildPathTwo",
//"testChildDataTwo".getBytes(), Ids.OPEN_ACL_UNSAFE,
//CreateMode.PERSISTENT);
System.out.println(new String(zk.getData(
"/testRootPath/testChildPathTwo", true, null)));
// 删除子目录节点
//zk.delete("/testRootPath/testChildPathTwo", -1);
//zk.delete("/testRootPath/testChildPathOne", -1);
//// 删除父目录节点
//zk.delete("/testRootPath", -1);
// 关闭连接
zk.close();
} catch (Exception e) {
System.out.println(e);
return false;
}
return true;
}

public String Get(String keys) {
String re = "";
String ppath = "/tmp/zookeeper";
int oldpos = -1;
int pos = 0;
while (true) {
pos = keys.indexOf(".", oldpos + 1);
if (pos < 0) {
ppath += &quot;/&quot;;
String str = keys.substring(oldpos + 1);
ppath += str;
break;
}
ppath += &quot;/&quot;;
String str = keys.substring(oldpos + 1, pos);
ppath += str;
oldpos = pos;
}
Stat stat = new Stat();
try {
System.out.println(&quot;asfsa:&quot; + ppath);
byte[] b = zk.getData(ppath, false, stat); // 获取节点的信息及存储的数据
re = new String(b);
} catch (Exception e) {
System.out.println(e);
}
return re;
}

private Conf() {

}

private ZooKeeper zk;
static private Conf static_;

public static void main(String args[]) {
// String hostports =
// &quot;192.168.1.88:2181,192.168.1.88:2182,192.168.1.88:2183&quot;;
String hostports = &quot;127.0.0.1:2181&quot;;
Conf.Instance().Init(hostports, 1000);

// String str =
// Conf.Instance().Get(&quot;conf.logicpoint.subscriberserverip&quot;);
// str = Conf.Instance().Get(&quot;conf.logicpoint.subscriberserverport&quot;);
// System.out.println(str);
while (true) {
try {
Thread.sleep(100);
} catch (Exception e) {

}
}

}
}
  命令:
  $ ./zookeeper-shell.sh127.0.0.1:2181
Connecting to 127.0.0.1:2181
Welcome to ZooKeeper!
JLine support is disabled
WATCHER::
WatchedEvent state:SyncConnected type:None path:null
ls /

create /zk &quot;test&quot;
ZooKeeper -server host:port cmd args
connect host:port
get path
ls path
set path data
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path
close
ls2 path
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path
setquota -n|-b val path
ls /

create /zk
ZooKeeper -server host:port cmd args
connect host:port
get path
ls path
set path data
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path
close
ls2 path
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path
setquota -n|-b val path
ls /zookeeper

ls2 /      

cZxid = 0x0
ctime = Wed Dec 31 16:00:00 PST 1969
mZxid = 0x0
mtime = Wed Dec 31 16:00:00 PST 1969
pZxid = 0x1a
cversion = 3
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 0
numChildren = 2
create /zk myData                              
ZooKeeper -server host:port cmd args
connect host:port
get path
ls path
set path data
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path
close
ls2 path
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path
setquota -n|-b val path
create /zk my
Created /zk
ls /

ls /zk
[]
ls /testRootPath

create /zkk &quot;abc&quot;
Created /zkk
ls /zkk
[]
get /zkk
&quot;abc&quot;
cZxid = 0x27
ctime = Thu Jul 31 07:55:17 PDT 2014
mZxid = 0x27
mtime = Thu Jul 31 07:55:17 PDT 2014
pZxid = 0x27
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0
get /zk
my
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x23
mtime = Thu Jul 31 07:53:15 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 2
numChildren = 0
set /zk ccc
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x28
mtime = Thu Jul 31 08:01:00 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
get /zk
ccc
cZxid = 0x23
ctime = Thu Jul 31 07:53:15 PDT 2014
mZxid = 0x28
mtime = Thu Jul 31 08:01:00 PDT 2014
pZxid = 0x23
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 3
numChildren = 0
ls
ZooKeeper -server host:port cmd args
connect host:port
get path
ls path
set path data
delquota [-n|-b] path
quit
printwatches on|off
create [-s] [-e] path data acl
stat path
close
ls2 path
history
listquota path
setAcl path acl
getAcl path
sync path
redo cmdno
addauth scheme auth
delete path
setquota -n|-b val path
ls /

get /testRootPath
testRootData
cZxid = 0x1a
ctime = Thu Jul 31 07:20:57 PDT 2014
mZxid = 0x1a
mtime = Thu Jul 31 07:20:57 PDT 2014
pZxid = 0x1d
cversion = 2
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 12
numChildren = 2
get /hu
hello1
hello2
cZxid = 0x2a
ctime = Thu Jul 31 08:07:35 PDT 2014
mZxid = 0x2a
mtime = Thu Jul 31 08:07:35 PDT 2014
pZxid = 0x2a
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 13
numChildren = 0
页: [1]
查看完整版本: zookeeper服务器Java代码和测试命令