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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM