기술나눔

사육사 데이터 구조

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ZooKeeper의 데이터 모델은 파일 시스템 트리 구조와 유사한 특성을 가지고 있지만 분산 애플리케이션용으로 특별히 설계되었습니다.

ZooKeeper 데이터 구조의 주요 기능은 다음과 같습니다.

  1. 계층적 네임스페이스 : ZooKeeper는 파일 시스템과 유사한 계층적 네임스페이스를 제공합니다. 각 노드에는 계층 구조에서 고유한 경로가 있습니다.

  2. Z노드 : ZooKeeper의 각 데이터 노드를 ZNode라고 합니다(파일 시스템의 파일 또는 디렉터리와 유사). ZNode는 계층 구조를 형성하는 하위 노드를 가질 수 있습니다.

    1. 영구 노드 : 영구 노드는 가장 일반적인 노드 유형입니다. 일단 생성되면 클라이언트가 명시적으로 삭제하지 않는 한 유지됩니다. ZooKeeper 서비스를 다시 시작하더라도 영구 노드는 손실되지 않습니다.

    2. 지속적 순차 : 영속순차노드는 영속노드의 확장으로 순차적 성격을 갖는다. 생성되면 ZooKeeper는 상위 노드에서 유지 관리하는 시퀀스 번호를 노드 이름 끝에 추가하여 전역 고유성을 보장합니다. 이러한 종류의 노드는 일반적으로 분산 대기열과 같이 질서 있는 배열이 필요한 시나리오를 구현하는 데 사용됩니다.

    3. 임시 : 임시 노드의 라이프사이클은 클라이언트 세션에 바인딩됩니다. 네트워크 문제 또는 클라이언트 충돌로 인해 클라이언트 세션이 만료되면 ZooKeeper는 세션에서 생성된 모든 임시 노드를 자동으로 삭제합니다. 이 기능은 임시 노드를 잠금 메커니즘 및 리더 선택 구현에 이상적으로 만듭니다.

    4. 임시 순차 : 임시 순차 노드는 임시 노드와 영구 순차 노드의 기능을 결합합니다. 수명이 제한되어 있으며 생성 시 일련 번호가 할당됩니다. 이는 잠금 또는 기타 동기화 프리미티브 구현과 같은 분산 동기화 및 조정 작업을 구현할 때 매우 유용합니다.

    5. 컨테이너 노드(컨테이너) : 컨테이너 노드는 데이터를 저장하지 않지만 하위 노드를 포함할 수 있는 특수 ZNode입니다. 이러한 노드는 파일 시스템의 디렉터리와 유사하게 데이터를 구성하고 구조화하는 데 사용할 수 있습니다.

    6. 내부 노드 : 내부 노드는 ZooKeeper의 상위 노드이며 하위 노드를 포함할 수 있습니다. 리프 노드는 일반적으로 데이터를 저장하는 데 사용되는 반면 내부 노드는 계층을 유지하는 데 사용된다는 점에서 리프 노드와 다릅니다.

    7. 리프 노드 : 리프 노드는 ZNode 계층 구조의 끝 노드이며 일반적으로 데이터를 저장하는 데 사용됩니다. 하위 노드가 없습니다.

    8. TTL 노드(Time To Live) : TTL 노드는 ZooKeeper 버전 3.5.0에 도입된 새로운 기능으로 노드가 TTL(Time to Live)을 설정할 수 있습니다. TTL이 만료되면 해당 노드가 임시 노드인 경우 삭제되고, 영구 노드인 경우 임시 노드가 되어 삭제됩니다.

  3. ACL(액세스 제어 목록):ZNode는 노드를 읽거나 수정할 수 있는 사용자 또는 사용자 그룹을 제어하기 위해 다양한 액세스 권한을 설정할 수 있습니다.

  4. 감시자 메커니즘 : 클라이언트는 ZNode에 Watcher를 설정할 수 있습니다. ZNode가 변경되면(예: 데이터 변경, 하위 노드 증가 또는 감소 등) Watcher가 설정된 모든 클라이언트가 알림을 받습니다.

  5. 고집 : 노드는 지속적일 수 있습니다. 즉, ZooKeeper 서비스가 다시 시작되더라도 영구 노드가 계속 존재한다는 의미입니다. 노드가 임시 노드인 경우 노드를 생성한 클라이언트 세션이 종료되면 노드가 자동으로 삭제됩니다.

  6. 데이터 저장고 : 각 ZNode는 문자열 값이나 바이너리 데이터와 같은 데이터를 저장할 수 있습니다. 클라이언트는 이 데이터를 읽고 쓸 수 있습니다.

  7. 순차적 : 순차 노드를 생성할 때 ZooKeeper는 노드 이름에 숫자를 추가합니다. 이 숫자는 0부터 시작하여 새 노드가 생성될 때마다 증가합니다. 이는 고유한 노드 이름을 보장하며 FIFO 순서를 구현하는 데 사용될 수 있습니다.

  8. 버전 관리 : 각 ZNode에는 버전 번호가 있습니다. 노드의 데이터가 수정될 때마다 버전 번호가 증가합니다. 이는 노드를 읽은 후 수정되었는지 확인하는 데 사용할 수 있습니다.