Zookeeper入门demo1

java代码

package cn.test;

import org.apache.curator.RetryPolicy;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.framework.recipes.cache.ChildData;
import org.apache.curator.framework.recipes.cache.TreeCache;
import org.apache.curator.framework.recipes.cache.TreeCacheEvent;
import org.apache.curator.framework.recipes.cache.TreeCacheListener;
import org.apache.curator.retry.ExponentialBackoffRetry;
import org.apache.zookeeper.CreateMode;
import org.junit.Test;

public class ZookeeperAPITest {

	@Test
	//创建永久节点
	public void createZnode() throws Exception {
		//1.定制一个重试策略
		/*
		 参数1:重试的间隔时间
		 参数2:重试的最大次数 
		 */
		RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
		//2.获取一个客户端对象
		/*
		 参数1:要连接的zookeeper服务器列表
		 参数2:会话的超时时间
		 参数3:链接超时时间
		 参数4:重试策略
		 */
		String connectString="node01:2181,node02:2181,node03:2181";
		CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
		
		//3.开启客户端
		client.start();
		//4.创建节点  CreateMode:PERSISTENT永久节点 EPHEMERAL_SEQUENTIAL永久序列化节点EPHEMERAL临时节点EPHEMERAL_SEQUENTIAL临时序列化节点
		client.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/hello2", "world".getBytes());
		//5.关闭客户端
		client.close();
	}
	
	@Test
	//创建临时节点
	public void createTmpZnode() throws Exception {
		//1.定制一个重试策略
		/*
		 参数1:重试的间隔时间
		 参数2:重试的最大次数 
		 */
		RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
		//2.获取一个客户端对象
		/*
		 参数1:要连接的zookeeper服务器列表
		 参数2:会话的超时时间
		 参数3:链接超时时间
		 参数4:重试策略
		 */
		String connectString="node01:2181,node02:2181,node03:2181";
		CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
		
		//3.开启客户端
		client.start();
		//4.创建节点  CreateMode:PERSISTENT永久节点 EPHEMERAL_SEQUENTIAL永久序列化节点EPHEMERAL临时节点EPHEMERAL_SEQUENTIAL临时序列化节点
		client.create().creatingParentsIfNeeded().withMode(CreateMode.EPHEMERAL).forPath("/hello3", "world".getBytes());
		//5.关闭客户端
		Thread.sleep(5000);//睡眠5秒,看临时节点
		client.close();
	}
	
	
	@Test
	//修改节点数据
	public void setZnode() throws Exception {
		//1.定制一个重试策略
		/*
		 参数1:重试的间隔时间
		 参数2:重试的最大次数 
		 */
		RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
		//2.获取一个客户端对象
		/*
		 参数1:要连接的zookeeper服务器列表
		 参数2:会话的超时时间
		 参数3:链接超时时间
		 参数4:重试策略
		 */
		String connectString="node01:2181,node02:2181,node03:2181";
		CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
		
		//3.开启客户端
		client.start();
		//4.修改节点数据 
		client.setData().forPath("/hello2", "world King".getBytes());
		//5.关闭客户端
		client.close();
	}

	@Test
	//获取节点数据
	public void getZnode() throws Exception {
		//1.定制一个重试策略
		/*
		 参数1:重试的间隔时间
		 参数2:重试的最大次数 
		 */
		RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
		//2.获取一个客户端对象
		/*
		 参数1:要连接的zookeeper服务器列表
		 参数2:会话的超时时间
		 参数3:链接超时时间
		 参数4:重试策略
		 */
		String connectString="node01:2181,node02:2181,node03:2181";
		CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
		
		//3.开启客户端
		client.start();
		//4.修改节点数据 
		byte[] bytes = client.getData().forPath("/hello2");
		System.out.println(new String(bytes));
		//5.关闭客户端
		client.close();
	}

	@Test
	//watch机制
	public void watchZnode() throws Exception {
		//1.定制一个重试策略
		/*
		 参数1:重试的间隔时间
		 参数2:重试的最大次数 
		 */
		RetryPolicy retry = new ExponentialBackoffRetry(1000, 1);
		//2.获取一个客户端对象
		/*
		 参数1:要连接的zookeeper服务器列表
		 参数2:会话的超时时间
		 参数3:链接超时时间
		 参数4:重试策略
		 */
		String connectString="node01:2181,node02:2181,node03:2181";
		CuratorFramework client = CuratorFrameworkFactory.newClient(connectString, 8000, 8000, retry);
		
		//3.开启客户端
		client.start();
		
		//4.创建节点的cache
		TreeCache treeCache = new TreeCache(client, "/hello2");
		
		//5.自定义一个监听器
		treeCache.getListenable().addListener(new TreeCacheListener() {
			
			@Override
			public void childEvent(CuratorFramework client, TreeCacheEvent event) throws Exception {
				// TODO Auto-generated method stub
				ChildData data = event.getData();
				if(data!=null) {
					switch (event.getType()) {
					case NODE_ADDED:
						System.out.println("监测到有节点新增");
						break;
					case NODE_REMOVED:
						System.out.println("监听到有节点被移除");
						break;
					case NODE_UPDATED:
						System.out.println("监控到节点被更新");
						break;
					default:
						break;
					}
				}
			}
		});
		
		//开始监听
		treeCache.start();
		Thread.sleep(100000);
		
	}
}

pom.xml配置


	4.0.0
	cn.test
	zookeeper_api_demo
	0.0.1-SNAPSHOT


	
	
		
			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
				
			
		
	

你可能感兴趣的:(大数据学习)