DE/ZooKeeper

Zookeeper API

winter0pear 2023. 8. 30. 15:21

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