아파치 주키퍼 znode

IT 위키

znode는 아파치 주키퍼에서 사용되는 데이터 단위이자 노드로, 주키퍼의 트리 구조 네임스페이스를 구성하는 핵심 요소이다. 각각의 znode는 파일 시스템의 디렉토리나 파일처럼 취급되며, 데이터와 메타데이터를 포함할 수 있다. 클라이언트는 znode를 통해 정보를 저장하거나, 상태 변화를 감지하거나, 노드 간 동기화를 구현할 수 있다.

1 개념[편집 | 원본 편집]

  • znode는 주키퍼의 경로(path)를 구성하는 각 지점이며, 예: `/app/servers/server1`
  • 각 znode는 최대 1MB 크기의 데이터를 저장할 수 있음
  • znode는 자식 노드를 가질 수 있으며, 이를 통해 계층적 트리 구조를 형성함
  • 메타데이터에는 버전, 생성 시간, 자식 수, ACL(Access Control List) 등이 포함됨

2 znode의 종류[편집 | 원본 편집]

  1. 영속 노드(Persistent znode)
    • 명시적으로 삭제되지 않는 한 유지됨
    • 서비스 설정, 공유 상태 저장 등 지속적인 정보에 사용
  1. 임시 노드(Ephemeral znode)
    • znode를 생성한 클라이언트 세션이 종료되면 자동 삭제됨
    • 리더 선출, 세션 감지, 임시 등록 등에 사용
  1. 시퀀스 노드(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 참고 문헌[편집 | 원본 편집]