자바 zookeeper 기본 조작 명령
package zookeeper;
import org.apache.zookeeper.CreateMode;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooDefs;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.Watcher.Event.EventType;
import org.apache.zookeeper.data.Stat;
import java.util.List;
import java.util.concurrent.CountDownLatch;
/**
*
*/
public class CreateZNode {
//
private static final int SESSION_TIMEOUT = 500000;
private CountDownLatch connectedSignal = new CountDownLatch(1);
public static WatchTest watch = new WatchTest();
public static void main(String[] args) {
try {
Watcher wh = new Watcher() {
public void process(WatchedEvent event) {
String path = event.getPath();
EventType type = event.getType();
System.out.println("----------int---"+type.getIntValue());
System.out.println("----------path---"+path);
System.out.println("----------type---"+type);
// ,
if (type == EventType.NodeDeleted) {
System.out.println(path + " , " + type);
return;
}
if (type == EventType.NodeDataChanged) {
System.out.println(path + " " + type);
return;
}
if (type == EventType.NodeCreated) {
System.out.println(path + " " + type);
return;
}
if (type == EventType.NodeChildrenChanged) {
System.out.println(path + " " + type);
return;
}
//
System.out.println(path + " " + type);
}
};
ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", SESSION_TIMEOUT, wh);
createNode(zk);
//
//updateNode(zk);
// zk
//listNode(zk);
// value
// getData(zk);
//
//deleteNode(zk);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void updateNode(ZooKeeper zk) throws Exception {
Stat update = zk.setData("/axz/b", "4545346".getBytes(), -1);
System.out.println(update);
}
private static void deleteNode(ZooKeeper zk) throws Exception {
// TODO Auto-generated method stub
zk.delete("/zxz/c", -1);
}
private static void listNode(ZooKeeper zk) throws KeeperException, InterruptedException {
List idList = zk.getChildren("/zxz/b", false);
idList.forEach(s->{
System.out.println(s);
});
}
private static void getData(ZooKeeper zk) throws Exception {
byte[] bytes = zk.getData("/zxz/b", false, new Stat());
System.out.println(new String(bytes));
}
public static void createNode(ZooKeeper zk) throws Exception {
String str1 = zk.create("/axz", "abc".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
}
}
링크 ux 클 라 이언 트 의 명령 cd / zookeeper / bin sh zkcli. sh 새 create - s - e / test - s: 생 성 순서 노드 - e: 임시 노드 생 성 하위 노드 목록 ls / test 획득 노드 정보 명령 get / test 수정 명령 set / test data 삭제 명령 delete / test
zookeeper 권한 은 실제 응용 에서 제어 합 니 다. 저 희 는 zookeeper 클 러 스 터 를 구축 하고 여러 가지 응용 서비스 로 통일 합 니 다. 예 를 들 어 kafka 클 러 스 터, dubbo 등 응용 데이터 가 다른 데 방 해 받 지 않도록 권한 제어 가 필요 합 니 다.인증 모드 는 World, auth, digest, ip World: 기본 방식 으로 전 세계 에서 auth 를 방문 할 수 있 습 니 다. 인증 을 통과 한 사용자 (cli 에서 addauth digest user: pwd 를 통 해 현재 컨 텍스트 의 권한 수여 사용 자 를 추가 할 수 있 습 니 다) digest: 즉 사용자 이름: 비밀번호 라 는 방식 으로 인증 합 니 다. 이것 도 업무 시스템 에서 가장 자주 사용 하 는 ip 입 니 다. Ip 주소 인증 을 사용 합 니 다.
ZooKeeper zk = new ZooKeeper("127.0.0.1:2181", SESSION_TIMEOUT, null);
zk.addAuthInfo("digest","foo:true".getBytes());
zk.create("/fff", "123".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
ZooKeeper zk1 = new ZooKeeper("127.0.0.1:2181", SESSION_TIMEOUT, null);
byte[] bytes = zk1.getData("/fff", false, new Stat());
System.out.println(new String(bytes));
이 때 zk1 조회 노드 정보 가 잘못 되 었 습 니 다: zookeeperException $NoAuthException
우 리 는 zk1 에 권한 을 증가 시 켜 야 한다.
ZooKeeper zk1 = new ZooKeeper("127.0.0.1:2181", SESSION_TIMEOUT, null);
zk1.addAuthInfo("digest","foo:true".getBytes());
byte[] bytes = zk1.getData("/fff", false, new Stat());
System.out.println(new String(bytes));
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.