Zookeeper 리 눅 스에 서 구축, 자바 작업, Windows 에서 보기
11696 단어 zookeeper
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 정보 상세 정보
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZooKeeper 서버의 예는 하나뿐입니다.-- Start zookeeper-3.4.6/conf 디렉터리에 zoo_sample.cfg의 파일입니다. 이 파일을zoo로 개명합니다.cfg, 파일 이름은zoo만 가능합니다.cfg, ZooKeeper의 스크립트가 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.