Zookeeper集群Java操作(zookeeper3.4.5)

1.zk集群java简单操作

1.0 包目录结构

lib取自zookpeeper官方压缩包(基于zk3.4.5测试通过)

1.1 AbstractZooKeeper.java

package com.ccy.zk;

import java.io.IOException;
import java.util.concurrent.CountDownLatch;

import org.apache.log4j.Logger;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.Watcher.Event.KeeperState;
import org.apache.zookeeper.ZooKeeper;

/**
 *
 * <p>
 * Title: AbstractZooKeeper.java
 * Package com.ccy.zk
 * </p>
 * <p>
 * Description: TODO
 * <p>
 * @author Tom.Cai
 * @created 2015-4-13 下午9:48:50
 * @version V1.0
 *
 */
public class AbstractZooKeeper implements Watcher {
	protected Logger logger = Logger.getLogger(AbstractZooKeeper.class); 

    //缓存时间
     private static final int SESSION_TIME   = 2000;
     protected ZooKeeper zooKeeper;
     protected CountDownLatch countDownLatch=new CountDownLatch(1);  

     //连接zk集群
     public void connect(String hosts) throws IOException, InterruptedException{
            zooKeeper = new ZooKeeper(hosts,SESSION_TIME,this);
            countDownLatch.await();
      }
     //zk处理
    @Override
    public void process(WatchedEvent event) {
        if(event.getState()==KeeperState.SyncConnected){
            countDownLatch.countDown();
        }
    }  

    //关闭集群
    public void close() throws InterruptedException{
        zooKeeper.close();
    }
} 

1.2 ZooKeeperOperator.java(测试类)

package com.ccy.zk;

import java.util.List;

import org.apache.log4j.Logger;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.ZooDefs.Ids;
import org.apache.zookeeper.data.Stat;

/**
 *
 * <p>
 * Title: ZooKeeperOperator.java
 * Package com.ccy.zk
 * </p>
 * <p>
 * Description: TODO
 * <p>
 * @author Tom.Cai
 * @created 2015-4-13 下午9:49:00
 * @version V1.0
 *
 */
public class ZooKeeperOperator extends AbstractZooKeeper {

	private static Logger logger = Logger.getLogger(ZooKeeperOperator.class); 

	/**
	 *
	 *创建znode
	 *
	 */
	public void create(String path,byte[] data)throws KeeperException, InterruptedException{
		/**
		 * 此处采用的是创建的是持久化节点:PERSISTENT表示不会因连接的断裂而删除节点
		 * EPHEMERAL 表示The znode will be deleted upon the client's disconnect.
		 */
		this.zooKeeper.create(path, data, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
	}
	/**
	 *
	 *获取节点信息
	 *
	 */
	public void getChild(String path) throws KeeperException, InterruptedException{
		try{
			List<String> list=this.zooKeeper.getChildren(path, false);
			if(list.isEmpty()){
				logger.info(path+"中没有节点");
				System.out.println(path+"中没有节点");
			}else{
				for(String child:list){
					System.out.println("节点:"+child);
				}
			}
		}catch (KeeperException.NoNodeException e) {
			// TODO: handle exception
			 throw e;
		}
	}
	/**
	 *
	 *获取节点数据
	 *
	 */
	public byte[] getData(String path) throws KeeperException, InterruptedException {
        return  this.zooKeeper.getData(path, false,null);
    }  

	/**
	 * 修改节点数据
	 */
	public Stat setDate(String path,byte[] data,int version) throws KeeperException, InterruptedException{
		return this.zooKeeper.setData(path, data, version);
	}

	/**
	 * 删除节点
	 */
	public void deleteNode(final String path,int version) throws InterruptedException, KeeperException{
		 this.zooKeeper.delete(path, version);
	}

	 public static void main(String[] args) {
		 try {
	            ZooKeeperOperator zkoperator = new ZooKeeperOperator();
	            zkoperator.connect("192.168.80.100");

	            //操作1:创建一个持久化节点
	            //zkoperator.create("/test1", "zk".getBytes());
	            //zkoperator.create("/test1/test11", "zk".getBytes());
	            //zkoperator.create("/test1/test12", "zk".getBytes());

	            //操作2:取出原有的节点
	            //byte[] b = zkoperator.getData("/test1");
	            //System.out.println(new String(b));

	            //操作3:设置节点数据
	            //zkoperator.setDate("/test1", "zk1".getBytes(), 1);

	            //操作4:删除节点操作
	            zkoperator.deleteNode("/test1/test12", 0);

	            //获取子节点
	           // zkoperator.getChild("/test1");

	            zkoperator.close();   

	        } catch (Exception e) {
	            e.printStackTrace();
	        }   

	}
}

我的个人网站:http://www.caicongyang.com ;

我的CSDN博客地址: http://blog.csdn.net/caicongyang ;

时间: 2024-10-14 00:37:22

Zookeeper集群Java操作(zookeeper3.4.5)的相关文章

Zookeeper集群shell操作

1.zookeeper Zookeeper可以用来保证数据在Zookeeper集群之间的数据事务一致性 2.启动集群与检查 分别在每台机器上启动 ./zkServer.sh start 检查状态 ./zkServer.sh status 3.客户端启动shell命令行 zkCli.sh 4.shell命令:输入help得到所有的命令列表 我的个人网站:http://www.caicongyang.com : 我的CSDN博客地址: http://blog.csdn.net/caicongyang

kafka集群和zookeeper集群的部署,kafka的java代码示例

来自:http://doc.okbase.net/QING____/archive/19447.html 也可参考: http://blog.csdn.net/21aspnet/article/details/19325373 http://blog.csdn.net/unix21/article/details/18990123 kafka作为分布式日志收集或系统监控服务,我们有必要在合适的场合使用它.kafka的部署包括zookeeper环境/kafka环境,同时还需要进行一些配置操作.接下

Java接口对Hadoop集群的操作

Java接口对Hadoop集群的操作 首先要有一个配置好的Hadoop集群 这里是我在SSM框架搭建的项目的测试类中实现的 一.windows下配置环境变量 下载文件并解压到C盘或者其他目录. 链接:http://pan.baidu.com/s/1jHHPElg 密码:aufd 配置环境变量 1.配置HADOOP_HOME 2.配置PATH 在PATH中添加 %HADOOP_HOME%\bin 1 3.配置HADOOP_USER_NAME 这是Hadoop集群的用户名 HADOOP_USER_N

使用java代码对zookeeper集群中的solrCloud数据进行CURD

1 导入相关的pom依赖 <dependencies> <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>4.10.2</version> </dependency> <dependency> <groupId>commons-logging

zookeeper集群安装

本文参考以下链接: http://www.cnblogs.com/yuyijq/p/4116365.html Zookeeper-Zookeeper leader选举 http://www.cnblogs.com/yuyijq/p/3424473.html Zookeeper-Zookeeper可以干什么 http://www.cnblogs.com/yuyijq/p/3391945.html Zookeeper--Zookeeper是什么 那分布式协调服务又是个什么东西呢?首先我们来看"协调&

Zookeeper 集群+kafka集群+kafka manager搭建

软件需求,软件包都上传到 /usr/local/src目录: jdk-8u101-linux-x64.tar.gz kafka.2.11-0.8.22.tar.gz zookeeper-3.4.9.tar.gz kafka-manager-1.3.0.7.zip * kafka-manager是通过scala打包获取一个编译完的项目,需要提前编译好,参考 https://github.com/yahoo/kafka-manager 硬件需求,四个主机: 192.168.100.100 : kaf

Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南)

1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使 用SolrCloud来满足这些需求. SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心. 它有几个特色功能: 1)集中式的配置信息 2)自动容

分布式架构中一致性解决方案——Zookeeper集群搭建

当我们的项目在不知不觉中做大了之后,各种问题就出来了,真jb头疼,比如性能,业务系统的并行计算的一致性协调问题,比如分布式架构的事务问题, 我们需要多台机器共同commit事务,经典的案例当然是银行转账,支付宝转账这种,如果是一台机器的话,这个还是很方便的,windows中自带了一个事务协 调器mstsc,但是呢,你那种很大很牛逼的项目不可能全是windows服务器,对吧,有些人为了解决这个问题,会采用2pc,3pc这种算法,或者是paxos的思 想进行分布式下的一致性处理,当然在这个世界上,真

solrCloud+tomcat+zookeeper集群配置

http://www.tuicool.com/articles/NNjAFr 概述: SolrCloud 是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心. 它有几个特色功能: 1)集中式的配置信息 2)自动容错 3)近实时搜索 4)查询时自动负载均衡 安装zookeeper 上面也说了 SolrCloud 是基于Solr和Zookeeper的分布式搜索方案,所有要部署solrCloud+tomcat+zookeeper的集群,必须先