Zookeeper的使用版本
3.4.9
这里使用的Java客户端框架是curator,以下是对应版本的依赖。
<!--测试包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--curator 两个必须依赖包 zookeeper客户端-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
操作代码
//创建节点
@Test
public void createZNode() throws Exception {
//1.2 得到客户端
CuratorFramework client =getClient();
//3.启动客户端
client.start();
//4.创建节点
client.create().creatingParentContainersIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/client", "zhangsan".getBytes());
//5.关闭客户端
client.close();
}
//修改节点
@Test
public void updateZNode() throws Exception {
//1.2 得到客户端
CuratorFramework client = getClient();
//3.启动客户端
client.start();
//4.修改节点
client.setData().forPath("/client", "lisi".getBytes());
//5.关闭客户端
client.close();
}
//查询节点
@Test
public void queryZNode() throws Exception {
//1.2得到客户端
CuratorFramework client = getClient();
//3.启动客户端
client.start();
//4.得到节点数据
byte[] bytes = client.getData().forPath("/client");
System.out.println(new String(bytes));
//5.关闭客户端
client.close();
}
//删除节点
@Test
public void delZNode() throws Exception {
//1.2得到客户端
CuratorFramework client = getClient();
//3.启动客户端
client.start();
//4.删除节点
client.delete().forPath("/client");
//5.关闭客户端
client.close();
}
//监听机制 watch
@Test
public void watch() throws Exception {
//1.2得到客户端
CuratorFramework client = getClient();
//3.启动客户端
client.start();
//4.创建监听
TreeCache treeCache = new TreeCache(client,"/client");
treeCache.getListenable().addListener(new TreeCacheListener() {
public void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throws Exception {
ChildData data = treeCacheEvent.getData();
if (data != null) {
switch (treeCacheEvent.getType()) {
case NODE_ADDED: //添加
System.out.println(data.getPath()+"被添加"+"数据---"+new String(data.getData()));
break;
case NODE_REMOVED: //移除
System.out.println(data.getPath()+"被移除");
break;
case NODE_UPDATED://更新
System.out.println(data.getPath()+"被修改"+"数据---"+new String(data.getData()));
break;
}
}
}
});
//5.启动监听
treeCache.start();
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//创建客户端
private CuratorFramework getClient() {
//1.创建策略
RetryPolicy policy = new ExponentialBackoffRetry(1000,1);
//主机列表 [集群用逗号隔开]
String connectString = "192.168.110.110:2181,192.168.110.120:2181,192.168.110.130:2181";
//2.创建客户端
CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, policy);
return client;
}