아파치 주키퍼 znode
IT 위키
znode는 아파치 주키퍼에서 사용되는 데이터 단위이자 노드로, 주키퍼의 트리 구조 네임스페이스를 구성하는 핵심 요소이다. 각각의 znode는 파일 시스템의 디렉토리나 파일처럼 취급되며, 데이터와 메타데이터를 포함할 수 있다. 클라이언트는 znode를 통해 정보를 저장하거나, 상태 변화를 감지하거나, 노드 간 동기화를 구현할 수 있다.
1 개념[편집 | 원본 편집]
- znode는 주키퍼의 경로(path)를 구성하는 각 지점이며, 예: `/app/servers/server1`
- 각 znode는 최대 1MB 크기의 데이터를 저장할 수 있음
- znode는 자식 노드를 가질 수 있으며, 이를 통해 계층적 트리 구조를 형성함
- 메타데이터에는 버전, 생성 시간, 자식 수, ACL(Access Control List) 등이 포함됨
2 znode의 종류[편집 | 원본 편집]
- 영속 노드(Persistent znode)
- 명시적으로 삭제되지 않는 한 유지됨
- 서비스 설정, 공유 상태 저장 등 지속적인 정보에 사용
- 임시 노드(Ephemeral znode)
- znode를 생성한 클라이언트 세션이 종료되면 자동 삭제됨
- 리더 선출, 세션 감지, 임시 등록 등에 사용
- 시퀀스 노드(Sequential znode)
- znode 생성 시 고유한 숫자가 자동으로 뒤에 붙음
- 영속 시퀀스 또는 임시 시퀀스로 생성 가능
- 예: `/queue/task-000000001`, `/queue/task-000000002`
3 znode의 기능[편집 | 원본 편집]
- 데이터 저장: 클라이언트가 znode에 문자열 또는 바이트 배열을 저장
- 노드 감시(Watch): 특정 znode의 생성, 삭제, 변경 등을 클라이언트가 감시 가능
- 노드 삭제: 클라이언트는 권한이 있을 경우 znode를 삭제 가능
- ACL 설정: 각 znode마다 접근 권한 설정 가능 (읽기/쓰기 등)
4 사용 예시[편집 | 원본 편집]
- `/services/web/instance1` → 웹 서비스 인스턴스 등록 (임시 znode)
- `/config/database/url` → 구성 설정 저장 (영속 znode)
- `/election/candidate0000000003` → 리더 선출 대기열 (시퀀스 znode)
5 제약 사항[편집 | 원본 편집]
- 하나의 znode는 1MB를 넘는 데이터를 저장할 수 없음
- 임시 znode는 자식 노드를 가질 수 없음
- 동일 경로에 중복된 znode 생성 불가
6 같이 보기[편집 | 원본 편집]
7 참고 문헌[편집 | 원본 편집]
- Apache ZooKeeper 공식 문서: https://zookeeper.apache.org/doc/current/zookeeperProgrammers.html
- "ZooKeeper: Wait-free coordination for internet-scale systems" – Hunt et al. (2010), USENIX ATC