设为首页 收藏本站
查看: 1229|回复: 0

[经验分享] Zookeeper集群Java操作(Zookeeper3.4.5)

[复制链接]

尚未签到

发表于 2015-12-24 11:40:47 | 显示全部楼层 |阅读模式
Zookeeper集群Java操作(Zookeeper3.4.5)
[日期:2015-04-14]来源:CSDN   作者:caicongyang[字体:大 中 小]


  1.zk集群java简单操作
  1.0 包目录结构
  lib取自zookpeeper官方压缩包(基于zk3.4.5测试通过)
DSC0000.jpg
  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;

  /**
*
*   
* Title: AbstractZooKeeper.java
* Package com.ccy.zk
*

*
  
* Description: TODO
*   
* @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;
  

  /**
*
*   
* Title: ZooKeeperOperator.java
* Package com.ccy.zk
*

*
  
* Description: TODO
*   
* @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 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();  
        }
  }
}
  --------------------------------------分割线 --------------------------------------
  Ubuntu 14.04安装分布式存储Sheepdog+ZooKeeper  http://www.iyunv.com/Linux/2014-12/110352.htm
  CentOS 6安装sheepdog 虚拟机分布式储存  http://www.iyunv.com/Linux/2013-08/89109.htm
  ZooKeeper集群配置 http://www.iyunv.com/Linux/2013-06/86348.htm
  使用ZooKeeper实现分布式共享锁 http://www.iyunv.com/Linux/2013-06/85550.htm
  分布式服务框架 ZooKeeper -- 管理分布式环境中的数据 http://www.iyunv.com/Linux/2013-06/85549.htm
  ZooKeeper集群环境搭建实践 http://www.iyunv.com/Linux/2013-04/83562.htm
  ZooKeeper服务器集群环境配置实测 http://www.iyunv.com/Linux/2013-04/83559.htm
  ZooKeeper集群安装 http://www.iyunv.com/Linux/2012-10/72906.htm
  本文永久更新链接地址:http://www.iyunv.com/Linux/2015-04/116172.htm
DSC0001.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155667-1-1.html 上篇帖子: zookeeper API 下篇帖子: ZooKeeper安装部署笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表