Zookeeper Cli
zookeeper 폴더 안 bin폴더를 찾아 아래 명령어로 우선 cli 실행한다.
./bin/zkCli.sh -server $host:$clientPort
우선 간단한 실습을 위해 로컬호스트로 띄웠다.
Create
Get
Set ( Update)
Delete
Watch
-m 로 level을 조정할 수 있다.
persistent는 해당 노드 자신만,
persistent_recursive는 해당 노드 + 자식 노드까지 알려준다.
Java API
Setting
우선 zookeeper 연결을 위해
build.gradle에 depedency를 추가한다.
dependencies {
implementation 'org.apache.zookeeper:zookeeper:3.7.2'
}
클래스를 만들고 아래 코드로 연결한다.
Zookeeper zk = new ZooKeeper(connectionString, sessionTimeout, new Watcher() {
public void process(WatchedEvent we) {
if (we.getState() == KeeperState.SyncConnected) {
// do your first job
}
}
});
connectionString 는 서버 host:port를 String 타입으로 준다. 여러대면 쉼표로 구분한다.
예) “1.1.1.1:2181,2.1.1.1:2181,3.1.1.1:2181”
SessionTimeout은 connection 시도에 대한 timeout 설정이다.
Watcher는 Watcher 등록을 위한 콜백함수를 등록할 수 있다.
Create
zk.create(path, data, ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
이외에 공식문서를 보면 여러 함수를 등록할 수 있는 기능들이 많다.
CreateMode 종류
- CONTAINER
- EPHEMERAL
- EPHEMERAL_SEQUENTIAL
- PERSISTENT
- PERSISTENT_SEQUENTIAL
- PERSISTENT_SEQUENTIAL_WITH_TTL
- PERSISTENT_WITH_TTL
sequential이 붙으면 incremental number가 붙어서 자동으로 지정된다.
Get
zk.getData(path, watcher, stat);
설정하고 싶지 않으면 null을 넣으면 된다.
Set (update)
int version = zk.exists(path, true).getVersion();
zk.setData(path, data, version);
version에 -1을 주면 버전과 상관없이 업데이트된다.
addWatch
zk.addWatch(path, mode)
mode 종류
- PERSISTENT : 자신만
- PERSISTENT_RECURSIVE : children까지
'Data Engineering > Distributed System' 카테고리의 다른 글
[OpenSearch] - 2. 텍스트 분석 (0) | 2024.01.06 |
---|---|
[OpenSearch] - 1. OpenSearch 구조와 동작방식 알아보기 & CRUD 등 여러 동작 실습하기 (2) | 2024.01.04 |
Zookeeper 여러 기능 알아보기 및 설치 (1) | 2024.01.04 |
Zookeeper 소개와 작동 프로세스 (0) | 2024.01.03 |
분산 시스템 이해하기 - BASE 원칙, CAP, PACELC (0) | 2024.01.03 |