准备
- windows上构建机器名称与IP的映射
C:\Windows\System32\drivers\etc
下的hosts文件
192.168.100.203 node-01
192.168.100.204 node-02
192.168.100.205 node-03
创建节点
package bigdata.hanjiaxiaozhi.cn.zookeeper;
import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.junit.Test;
public class ZkClientTest {
@Test
public void createZnode() throws Exception {
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
CuratorFramework client = CuratorFrameworkFactory.newClient("node-01:2181,node-02:2181,node-03:2181", retryPolicy);
client.start();
client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hanjiaxiaozhi","My name is Tom".getBytes());
client.close();
}
}
获取数据
@Test
public void getZnodeData() throws Exception {
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
CuratorFramework client = CuratorFrameworkFactory.newClient("node-01:2181,node-02:2181,node-03:2181", retryPolicy);
client.start();
byte[] datas = client.getData().forPath("/hanjiaxiaozhi");
System.out.println(new String(datas));
client.close();
}
修改数据
@Test
public void setZnodeData() throws Exception {
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
CuratorFramework client = CuratorFrameworkFactory.newClient("node-01:2181,node-02:2181,node-03:2181", retryPolicy);
client.start();
client.setData().forPath("/hanjiaxiaozhi","My name is heima".getBytes());
client.close();
}
设置监听器
@Test
public void setZnodeWatch() throws Exception {
RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000,5);
CuratorFramework client = CuratorFrameworkFactory.newClient("node-01:2181,node-02:2181,node-03:2181", retryPolicy);
client.start();
TreeCache treeCache = new TreeCache(client,"/hanjiaxiaozhi");
treeCache.getListenable().addListener(new TreeCacheListener() {
@Override
public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {
ChildData data = event.getData();
if(data != null){
switch (event.getType()){
case NODE_ADDED:
System.out.println("NODE_ADDED:"+data.getPath()+"数据:"+ new String(data.getData()));
break;
case NODE_UPDATED:
System.out.println("NODE_UPDATED:"+data.getPath()+"数据:"+ new String(data.getData()));
break;
case NODE_REMOVED:
System.out.println("NODE_REMOVED:"+data.getPath()+"数据:"+ new String(data.getData()));
break;
default:
break;
}
}else{
System.out.println("Data is null :"+event.getType());
}
}
});
treeCache.start();
Thread.sleep(10000000000000L);
treeCache.close();
client.close();
}