Zookeeper 리 눅 스에 서 구축, 자바 작업, Windows 에서 보기

11696 단어 zookeeper
Zookeeper 리 눅 스에 서 구축, 자바 작업, Windows 에서 보기
Zookeeper 는 Liux 아래 에 구축 되 었 습 니 다.
링크 ux 버 전의 zookeeper 압축 패 키 지 를 다운로드 합 니 다.https://download.csdn.net/download/eieiei438/10397185
압축 풀기 (압축 풀기 명령 tar - zxvf 압축 패키지 이름) 배치 하 다.
우 리 는 conf 폴 더 아래로 들 어가 zoosample. cfg 이 파일 은 zoo. cfg 로 복사 되 었 습 니 다.
zoo. cfg 파일 내용 수정 (vim zoo. cfg)

메모: 설정 파일 의 폴 더 를 만 듭 니 다. 그렇지 않 으 면 서비스 가 잘못 되 었 습 니 다 환경 변수 설정
설치 디 렉 터 리 설정: export ZOOKEEPERINSTALL = 설치 디 렉 터 리 bin: export PATH = $PATH: $ZOOKEEPER 설정INSTALL/bin


운행 하 다.
Zookeeper 서버 시작
디 렉 터 리 에 있 는 빈 폴 더 를 설치 하 십시오 실행. / zkServer. sh start

테스트
Zookeeper 클 라 이언 트 시작
디 렉 터 리 에 있 는 빈 폴 더 를 설치 하 십시오 실행. / zkCli. sh - server localhost: 2181 클 라 이언 트 진입 create / zk 123 을 실행 하여 노드 를 만 듭 니 다 검색 ls /

자바 조작 [maven 버 전의 자바 프로젝트]
pom 파일 설정 의존

    org.apache.zookeeper
    zookeeper
    3.4.8


    com.netflix.curator
    curator-framework
    1.2.3


    com.netflix.curator
    curator-recipes
    1.2.3


    com.netflix.curator
    curator-test
    1.2.3


    com.netflix.curator
    curator-x-discovery
    1.2.3

테스트 코드
MyZooKeeper
package com.peng.zookeeper;

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.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.KeeperState;

public class MyZooKeeper implements Watcher {

    Logger logger = Logger.getLogger(MyZooKeeper.class);

    protected CountDownLatch countDownLatch = new CountDownLatch(1);
    //     
    private static final int SESSION_TIME = 2000;
    public static ZooKeeper zooKeeper = null;

    /**
     *           
     */
    public void process(WatchedEvent event) {
        logger.info("      :" + event.getState());
        if (event.getState() == KeeperState.SyncConnected) {
            countDownLatch.countDown();
        }
    }

    /**
     * 

* Zookeeper *

* *

     *  
     *     [  connectString       ] 
     *       : 192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181 
     *              ip:port      ,     
     *     ConnectStringParser connectStringParser =  new ConnectStringParser(“192.168.1.1:2181,192.168.1.2:2181,192.168.1.3:2181”); 
     *                       ,        ArrayList  
     *     ArrayList serverAddresses = new ArrayList(); 
     *        ,              StaticHostProvider  ,        ,                。 
     *     ZK      Server     List ,      (           ),       ,       , 0          。 
     *       ,Server        ,             Server     ,        。 
     *     [           ] 
     *     ZooKeeper ,            ,      ,           ID(Session ID)。 
     *                       , SESSION_TIMEOUT   ,               (            heart_beat,       SESSION_TIMEOUT  )。 
     *       ,      ,Session    ,  ZK            Session  。 
     *                  (           ZK    ,           ),                    , 
     *                    (   ZK                connectString)           。 
     *     [    ] 
     *                         , ZK                ,   minSessionTimeout maxSessionTimeout        。 
     *                       ,                。    Session      2 * tickTime ~ 20 * tickTime
     * 
*
* @param connectString
* Zookeeper 서비스 주소
* @param sessionTimeout
* Zookeeper 연결 시간 초과
*/
public void connect(String hosts) {
try {
if (zooKeeper == null) {
/ / ZK 클 라 이언 트 는 ZK 서버 의 모든 주 소 를 여기에 설정 할 수 있 습 니 다.
zooKeeper = new ZooKeeper(hosts, SESSION_TIME, this);
/ / CountDownlatch. awat () 의 스 레 드 (현재 스 레 드) 를 사용 하여 모든 다른 스 레 드 가 있 을 때 까지 차단 합 니 다.
/ / CountDownlatch 의 스 레 드 실행 완료 (countDown () 결 과 는 0)
countDownLatch.await();
}
} catch (IOException e) {
logger. error ("연결 생 성 실패, Interrupted Exception 발생, e" + e. getMessage (), e);
} catch (InterruptedException e) {
logger. error ("연결 생 성 실패, IOException 발생, e" + e. getMessage (), e);
}
}
/**
* 연결 닫 기
*/
public void close() {
try {
if (zooKeeper != null) {
zooKeeper.close();
}
} catch (InterruptedException e) {
logger.error("release connection error ," + e.getMessage(), e);
}
}
}

ZKOperate
package com.peng.zookeeper;

import java.util.List;

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

public class ZKOperate {

    Logger logger = Logger.getLogger(MyZooKeeper.class);

    MyZooKeeper myZooKeeper = new MyZooKeeper();

    /**
     * 

* zNode , String create(path, data[], List(ACL ), * CreateMode) *

*
* *

     *  
     *           (CreateMode) 
     *     1、PERSISTENT:      
     *     2、PERSISTENT_SEQUENTIAL:           ,                    1 
     *     3、EPHEMERAL:       ,session              
     *     4、EPHEMERAL_SEQUENTIAL:        
     * 
*
* @param path
* zNode 노드 경로
* @param data
* zNode 데이터 내용
* @ return 생 성 성공 은 true 로 돌아 가 고, 반대로 false 로 돌아 갑 니 다.
*/
public boolean createZNode(String path, String data) {
try {
String zkPath = MyZooKeeper.zooKeeper.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE,
CreateMode.PERSISTENT);
logger. info ("ZooKeeper 생 성 노드 성공, 노드 주소:" + zkPath);
return true;
} catch (KeeperException e) {
logger. error ("노드 생 성 실패:" + e. getMessage () + ", 경로:" + path, e);
} catch (InterruptedException e) {
logger. error ("노드 생 성 실패:" + e. getMessage () + ", 경로:" + path, e);
}
return false;
}
/**
*
* zMode 노드 삭제, void delete (path, stat)
*
*
*
*

     *  
     *        
     *     1、      ,          . 
     *     2、      znode       ,     ,         ;         -1,       ,    .
     * 
*
* @param path
* zNode 노드 경로
* @ return 삭제 에 성공 하면 true 로 돌아 가 고, 반대로 false 로 돌아 갑 니 다.
*/
public boolean deteleZNode(String path) {
try {
MyZooKeeper.zooKeeper.delete(path, -1);
logger. info ("ZooKeeper 노드 삭제 성공, 노드 주소:" + path);
return true;
} catch (InterruptedException e) {
logger. error ("노드 삭제 실패:" + e. getMessage () + ", 경로:" + path, e);
} catch (KeeperException e) {
logger. error ("노드 삭제 실패:" + e. getMessage () + ", 경로:" + path, e);
}
return false;
}
/**
*
* 지정 한 노드 데이터 내용, Stat setData (path, data [], stat) 업데이트
*
*
*

     *  
     *         znode        -1,      
     * 
*
* @param path
* zNode 노드 경로
* @param data
* zNode 데이터 내용
* @ return 업데이트 에 성공 하여 true 를 되 돌려 주 고 false 를 되 돌려 줍 니 다.
*/
public boolean updateZNodeData(String path, String data) {
try {
Stat stat = MyZooKeeper.zooKeeper.setData(path, data.getBytes(), -1);
logger. info ("데이터 업데이트 성공, 경로:" + path + ", stat:" + stat);
return true;
} catch (KeeperException e) {
logger. error ("노드 데이터 업데이트 실패:" + e. getMessage () + ", 경로:" + path, e);
} catch (InterruptedException e) {
logger. error ("노드 데이터 업데이트 실패:" + e. getMessage () + ", 경로:" + path, e);
}
return false;
}
/**
*
* 지정 한 노드 데이터 내용 읽 기, byte [] getData (path, watcher, stat)
*
*
* @param path
* zNode 노드 경로
* @ return 노드 에 저 장 된 값, 값 반환, 값 반환 null
*/
public String readData(String path) {
String data = null;
try {
data = new String(MyZooKeeper.zooKeeper.getData(path, false, null));
logger. info ("데이터 읽 기 성공, 경로:" + path + ", content:" + data);
} catch (KeeperException e) {
logger. error ("데이터 읽 기 실패, KeeperException 발생! path:" + path + ", errMsg:" + e. getMessage (), e);
} catch (InterruptedException e) {
logger. error ("데 이 터 를 읽 는 데 실 패 했 습 니 다. Interrupted Exception! path:" + path + ", errMsg:" + e. getMessage (), e);
}
return data;
}
/**
*
* 특정한 노드 아래 의 모든 하위 노드 를 가 져 옵 니 다. List getChildren (path, watcher) 이 방법 은 여러 개의 과부하 가 있 습 니 다.
*
*
* @param path
* zNode 노드 경로
* @ return 서브 노드 경로 집합 설명, 여기 서 돌아 오 는 값 은 노드 이름 입 니 다.
*
*

     *  
     *     eg. 
     *     /node 
     *     /node/child1 
     *     /node/child2 
     *     getChild( "node" )        ["child1","child2"]
     *         
*
* @throws KeeperException
* @throws InterruptedException
*/
public List getChild(String path) {
try {
List list = MyZooKeeper.zooKeeper.getChildren(path, false);
if (list.isEmpty()) {
logger. info ("노드 가 없습니다" + path);
}
return list;
} catch (KeeperException e) {
logger. error ("하위 노드 데 이 터 를 읽 는 데 실 패 했 습 니 다. KeeperException! path:" + path + ", errMsg:" + e. getMessage (), e);
} catch (InterruptedException e) {
logger. error ("하위 노드 데 이 터 를 읽 는 데 실 패 했 습 니 다. Interrupted Exception! path:" + path + ", errMsg:" + e. getMessage (), e);
}
return null;
}
/**
*
* 어떤 zNode 노드 가 존재 하 는 지, Stat exists (path, watch)
*
*
* @param path
* zNode 노드 경로
* @ return 존재 반환 true, 반대로 false
*/
public boolean isExists(String path) {
try {
Stat stat = MyZooKeeper.zooKeeper.exists(path, false);
return null != stat;
} catch (KeeperException e) {
logger. error ("데이터 읽 기 실패, KeeperException 발생! path:" + path + ", errMsg:" + e. getMessage (), e);
} catch (InterruptedException e) {
logger. error ("데 이 터 를 읽 는 데 실 패 했 습 니 다. Interrupted Exception! path:" + path + ", errMsg:" + e. getMessage (), e);
}
return false;
}
}

ZKClientTest
package com.peng.zookeeper;

public class ZKClientTest {

    public static void main(String[] args) {
        String rootPath = "/pay";

        // ZKOperate  
        ZKOperate zkWatchAPI = new ZKOperate();

        //   zk   
        MyZooKeeper zooKeeper = new MyZooKeeper();
        zooKeeper.connect("118.24.173.91:2181");

        //       
        if (zkWatchAPI.createZNode(rootPath, "http://www.baidu.com")) {
            System.out.println("  [" + rootPath + "]    [" + zkWatchAPI.readData(rootPath) + "]");
        }
        zooKeeper.close();
    }
}


Windows 클 라 우 드 호스트 의 Zookeeper 정보 보기
ZooInspector 압축 파일 다운로드https://download.csdn.net/download/eieiei438/10397185
스트레스 해소 build 에 있 는 zookeeper - dev - ZooInspector. jar 열기 정보 작성 및 실행

클 라 우 드 호스트 Zookeeper 정보 상세 정보

좋은 웹페이지 즐겨찾기