• 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 /进行查看即可

  • 相关阅读:
    iscsi: 多路径
    Paxos算法分析
    ceph实践: 搭建环境
    ocfs2: 搭建环境
    设计模式:Context模式
    Ceph剖析:Leader选举
    Ceph剖析:定时器safetimer的实现
    nfs:环境搭建
    Ceph剖析:数据分布之CRUSH算法与一致性Hash
    Linux命令小结:crontab/netstat/iostat/sar
  • 原文地址:https://www.cnblogs.com/yxllovetm/p/10017034.html
Copyright © 2020-2023  润新知