一、Java连接Zookeeper
ZooKeeper zk;
@Before
public void connect() throws IOException, InterruptedException {
CountDownLatch cdl = new CountDownLatch(1);
// connectString - 连接地址+端口号
// sessionTimeout - 会话超时时间 - 表示连接超时时间,单位默认为毫秒
// watcher - 监控者 - 监控连接状态
// Zookeeper本身是一个非阻塞式连接
zk = new ZooKeeper("localhost:2181", 5000, new Watcher() {
// 监控连接状态
public void process(WatchedEvent event) {
if (event.getState() == KeeperState.SyncConnected) {
System.out.println("连接成功~~~");
}
cdl.countDown();
}
});
cdl.await();
}
二、创建节点
// 创建节点
@Test
public void create() throws KeeperException, InterruptedException {
// path - 节点路径
// data - 数据
// acl - acl策略
// createMode - 节点类型
// 返回值表示节点的实际路径
String str = zk.create("/node08", "hello,1807".getBytes(), Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT_SEQUENTIAL);
System.out.println(str);
}
三、删除节点
@Test
public void delete() throws InterruptedException, KeeperException {
// path - 节点路径
// version - 数据版本
// 在删除节点的时候回比较指定的数据版本和节点的实际数据版本是否一致
// 如果一致则删除,如果不一致则放弃该操作
// zk.delete("/node04", 0);
// -1表示强制执行
zk.delete("/node04", -1);
}
四、更新数据
@Test
public void set() throws KeeperException, InterruptedException{
// path - 节点路径
//data - 数据
// version - 数据版本
// 返回节点信息
Stat s = zk.setData("/node02", "hi,zk".getBytes(), -1);
System.out.println(s);
}