1. Zookeeper API
- 주키퍼는 계층적인 네임스페이스를 제공하며 네임스페이스 내에 존재하는 모든 개별 노드를 znode라고 부른다
- 모든 znode는 데이터(바이트 배열)을 가질수 있고 자식 znode를 가질 수도 있다
- znode는 상대경로를 지원하지 않고 절대 경로만 지원한다
- 데이터는 항상 전체를 읽고 쓰는 구조
- znode는 1M 이하의 데이터와 자식 노드를 가질 수 있다
- 영속 종류에 따른 지노드 구분
구분 | 설명 |
영구 노드 (Persistent Nodes) | - 클라이언트가 명시적으로 삭제하기 전까지 존재 |
임시 노드 (Ephemeral Nodes) | - 세션이 유지되는 동안 활성 - 세션 종료 시 주키퍼에 의해 삭제 - 자식 노드를 가질수 없다 |
순차 노드 (Sequence Nodes) | - 경로의 끝에 일정하게 증가하는 카운터의 추가, 영구 및 임시 노드 모두 적용가능 - 저장하는 순서에 따라 자동으로 일련번호가 붙는 노드 |
2. Zookeeper API
- znode를 생성 또는 삭제하거나, znode의 data를 읽거나 쓰기 위해서는 file system과 유사한 zookeeper api를 이용해야 한다
연산 | 설명 |
Create | znode 생성 (부모 znode가 존재한다는 가정) |
Delete | znode 삭제 (어떤 하위 znode도 존재하지 않는다는 가정) |
Exists | znode의 존재여부 확인, 메타데이터를 구함 |
getACL, setACL | znode에 대한 ACL 설정을 얻음 or 설정 |
getChildren | znode에 대한 자식 목록을 얻음 |
getData, setData | znode와 관련있는 데이터를 얻음 or 저장 |
sync | znode의 클라이언트 뷰와 주키퍼를 동기화 |
Multi(다중 갱신) | 여러개의primitive 연산을 하나의 갱신단위로 묶은 후 연산의 성공, 실패 여부를 반환 (전역적인 불변성을 유지해야하는 분산환경 구조체를 구축하는데 사용) |
3. Zookeeper Watcher
- znode의 상태 변경 이벤트 발생 시 Watch를 설정(Watcher 생성)한 클라이언트에게 변화를 알려준다
이벤트 | 설명 |
NODE_CREATE | znode 생성 (부모 znode가 존재한다는 가정) |
NODE_DELETE | znode 삭제 (어떤 하위 znode도 존재하지 않는다는 가정) |
NODE_DATA_CHANGED | znode와 관련있는 데이터를 얻음 or 저장 |
NODE_CHILDREN_CHANGED | znode의 클라이언트 뷰와 주키퍼를 동기화 |
'DE > ZooKeeper' 카테고리의 다른 글
ZooKeepr 장점과 특성 (0) | 2023.08.30 |
---|---|
Znode (0) | 2023.08.30 |
ZooKeeper (0) | 2023.08.29 |