org.apache.curator
curator-framework
2.12.0
org.apache.curator
curator-recipes
2.12.0
com.google.collections
google-collections
1.0
junit
junit
RELEASE
org.slf4j
slf4j-simple
1.7.25
org.apache.maven.plugins
maven-compiler-plugin
3.2
1.8
1.8
UTF-8
packagecom.ytkj.zookeeper;importorg.apache.curator.RetryPolicy;importorg.apache.curator.framework.CuratorFramework;importorg.apache.curator.framework.CuratorFrameworkFactory;importorg.apache.curator.framework.recipes.cache.ChildData;importorg.apache.curator.framework.recipes.cache.TreeCache;importorg.apache.curator.framework.recipes.cache.TreeCacheEvent;importorg.apache.curator.framework.recipes.cache.TreeCacheListener;importorg.apache.curator.retry.ExponentialBackoffRetry;importorg.apache.zookeeper.CreateMode;importorg.junit.Test;public classZookeeperApiTest {/*** PERSISTENT:永久节点
* EPHEMERAL:临时节点
* PERSISTENT_SEQUENTIAL:永久节点、序列化
* EPHEMERAL_SEQUENTIAL:临时节点、序列化*/
/*** 创建永久节点
*
*@throwsException*/@Testpublic void createZnode() throwsException {//定制重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);//获取客户端对象
String connectString = "192.168.100.100:2181,192.168.100.110:2181,192.168.100.120:2181";
CuratorFramework client= CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retryPolicy);//开启客户端
client.start();//创建节点
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello1", "world".getBytes());//关闭客户端
client.close();
}/*创建临时节点*/@Testpublic void createTmpZnode() throwsException {//1:定制一个重试策略
/*param1: 重试的间隔时间
param2:重试的最大次数*/RetryPolicy retryPolicy= new ExponentialBackoffRetry(1000, 1);//2:获取一个客户端对象
/*param1:要连接的Zookeeper服务器列表
param2:会话的超时时间
param3:链接超时时间
param4:重试策略*/String connectionStr= "192.168.100.100:2181,192.168.100.110:2181,192.168.100.120:2181";
CuratorFramework client= CuratorFrameworkFactory.newClient(connectionStr, 8000, 8000, retryPolicy);//3:开启客户端
client.start();//4:创建节点
client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello2", "world".getBytes());//临时节点 会话结束就临时节点就消失
Thread.sleep(5000);//5:关闭客户端
client.close();
}/*设置节点数据*/@Testpublic void setZnodeData() throwsException {//1:定制一个重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);//2:获取客户端
String conectionStr = "192.168.100.100:2181,192.168.100.110:2181,192.168.100.120:2181";
CuratorFramework client= CuratorFrameworkFactory.newClient(conectionStr, 8000, 8000, retryPolicy);//3:启动客户端
client.start();//4:修改节点数据
client.setData().forPath("/hello", "zookeeper".getBytes());//5:关闭客户端
client.close();
}/*获取节点数据*/@Testpublic void getZnodeData() throwsException {//1:定制一个重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 1);//2:获取客户端
String conectionStr = "192.168.100.100:2181,192.168.100.110:2181,192.168.100.120:2181";
CuratorFramework client= CuratorFrameworkFactory.newClient(conectionStr, 8000, 8000, retryPolicy);//3:启动客户端
client.start();//4:获取节点数据
byte[] bytes = client.getData().forPath("/hello");
System.out.println(newString(bytes));//5:关闭客户端
client.close();
}/*节点的watch机制*/@Testpublic void watchZnode() throwsException {//1:定制一个重试策略
RetryPolicy retryPolicy = new ExponentialBackoffRetry(3000, 1);//2:获取客户端
String conectionStr = "node01:2181,node02:2181,node03:2181";
CuratorFramework client= CuratorFrameworkFactory.newClient(conectionStr, 8000, 8000, retryPolicy);//3:启动客户端
client.start();//4:创建一个TreeCache对象,指定要监控的节点路径
TreeCache treeCache = new TreeCache(client, "/hello3");//5:自定义一个监听器
treeCache.getListenable().addListener(newTreeCacheListener() {
@Overridepublic void childEvent(CuratorFramework curatorFramework, TreeCacheEvent treeCacheEvent) throwsException {
ChildData data=treeCacheEvent.getData();if (data != null) {switch(treeCacheEvent.getType()) {caseNODE_ADDED:
System.out.println("监控到有新增节点!");break;caseNODE_REMOVED:
System.out.println("监控到有节点被移除!");break;caseNODE_UPDATED:
System.out.println("监控到节点被更新!");break;default:break;
}
}
}
});//开始监听
treeCache.start();
Thread.sleep(1000000);
}
}
登录Zookeeper客户端查看
bin/zkCli.sh -server node01:2181