zoukankan      html  css  js  c++  java
  • Zookeeper--java操作zookeeper

    如果是使用java操作zookeeper,zookeeper的javaclient 使我们更轻松的去对zookeeper进行各种操作,我们引入zookeeper-3.4.5.jar 和 zkclient-0.1.jar即可。

    zookeeper-3.3.4.jar 为官方提供的javaApi,zkClient-0.1jar为在源生api基础上进行扩展的开源JAVA客户端

    创建会话方法:客户端可以通过创建一个zookeeper实例来链接zookeeper服务器。

    Zookeeper(Arguments)方法(一共4个构造方法,根据参数不同)

    参数说明如下:

    connectString:连接服务器列表,已“,”分割。

    sessionTimeOut:心跳检测时间周期(毫秒)

    watcher:事件处理通知器。

    canBereadOnly:标识当前会话是否支持只读。

    sessionId和sessionPasswd:提供连接zookeeper的sessionId和密码,通过这两个确定唯一一台客户端,目的是可以提供重复会话

    注意:zookeeper客户端和服务器端会话的建立是一个异步的过程,也就是说在程序中,我们程序方法在处理完客户端初始化后,立即返回(程序往下执行代码,这样,大多数情况下我们并没有真正构建好一个可用会话,在会话的声明周期处于"CONNECTING"时才算真正建立完毕,所以我们需要使用多线程中的一个工具类) 

    要导入的maven依赖

           <dependency>
                <groupId>org.apache.zookeeper</groupId>
                <artifactId>zookeeper</artifactId>
                <version>3.4.6</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.4</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>

    创建一个测试类,我们在test目录下创建ZkCreateDemo.java

    import org.apache.zookeeper.*;
    import org.junit.Before;
    import org.junit.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import javax.websocket.Session;
    import java.io.IOException;
    
    /*
       java操作zookeeper对象
    
     */
    public class ZkCreateNodeDemo {
    
        private static final Logger logger = LoggerFactory.getLogger(ZkCreateNodeDemo.class);
        private Session session;
    
        String url = "192.168.25.8:2181";
        ZooKeeper zk;
    
        //初始化
        @Before
        public void test01() throws IOException {
            zk = new ZooKeeper(url, 3000, new Watcher() {
                @Override
                public void process(WatchedEvent event) {
                    String path = event.getPath();                //负责监听的路径
                    Event.KeeperState state = event.getState();   //负责监听的状态
                    Event.EventType type = event.getType();       //负责监听类型
                    logger.info("路径为="+path);
                    logger.info("状态为="+state);
                    logger.info("监听类型="+type);
                }
            });
        }
    //创建节点
    @Test
    public void createNode() throws Exception{
        try {
            zk.create("/a1", "yangxinlei".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            zk.create("/b1", "yangxinlei12".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
            zk.create("/c1", "yangxinlei123".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        }catch (Exception ex){
            logger.info("zookeeper创建失败!");
            ex.printStackTrace();
        }
    }
    
    
    //删除节点
    @Test
    public void deleteNode() throws Exception{
        zk.delete("/a1",-1);
    }
    
    
    //修改节点
    @Test
    public void updateNode() throws Exception{
        zk.setData("/b1","testUpdate".getBytes(),-1);
    }
    
    //查询节点
    @Test
    public void getNode() throws Exception{
        byte[] data = zk.getData("/c1", true, null);
        System.out.println(new String(data));
    }

      

    进行单元测试 ,如果不成功,查看一下linux下的防火墙是否关闭,确保自己的linux环境下的防火墙已经关闭,关闭防火墙的命令 service iptables stop

     

     创建节点成功!可以通过两种方式进行查看

    (1) 通过ZooInspector,下载地址为 

        https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip; 

    可以看到节点已经被创建出来

     

    或者在linux下开启客户端 只需要输入命令./zkCli.sh 开启客户端,然后再输入ls /进行查看即可

  • 相关阅读:
    CSS3 target伪类简介
    不用position,让div垂直居中
    css3 在线编辑工具 连兼容都写好了
    a标签伪类的顺序
    oncopy和onpaste
    【leetcode】1523. Count Odd Numbers in an Interval Range
    【leetcode】1518. Water Bottles
    【leetcode】1514. Path with Maximum Probability
    【leetcode】1513. Number of Substrings With Only 1s
    【leetcode】1512. Number of Good Pairs
  • 原文地址:https://www.cnblogs.com/yxllovetm/p/10017034.html
Copyright © 2011-2022 走看看