CNF Taxonomies

CNF Taxonomies는 정보를 체계적으로 분류하고 조직화하기 위해 정의된 계층적 분류 체계입니다.

Apache Zookeeper


Apache ZooKeeper는 대규모 분산 시스템을 위한 중앙 집중식 구성 관리, 동기화 서비스, 이름 서비스를 제공하는 오픈소스 프로젝트이다. 원래는 Hadoop에서 고가용성과 노드 간 협력을 위해 개발되었으며, 현재는 Kafka, HBase, Solr 등 다양한 분산 시스템의 필수 컴포넌트로 활용되고 있다.

ZooKeeper는 “작은 코디네이터 서버”라는 개념으로, 분산 환경에서의 일관성(consistency), 가용성(availability), 장애 복구(failover) 등을 보장하는 데 필수적인 기능들을 제공하고 있다.

주요 특징

  • 중앙 집중형 메타데이터 관리: 모든 클러스터 구성 정보와 상태를 중앙에서 관리.
  • ZNode 기반 트리 구조: 파일 시스템과 유사한 데이터 구조를 통해 빠르고 구조적인 접근 지원.
  • watch 기능: 노드 상태 변경을 감지하여 실시간 이벤트 기반 처리 가능.
  • 순서 보장 및 원자성: 분산 환경에서도 순서와 원자성을 유지하는 트랜잭션 제공.
  • Leader 선출 메커니즘: 여러 서버 중 하나를 리더로 자동 선출하여 마스터 노드 역할 수행.
  • 고가용성: 여러 노드로 구성된 클러스터를 통해 장애 발생 시 자동 복구 및 지속 서비스 가능.

장점

  • 일관된 분산 시스템 운영: 노드 간 충돌을 방지하고 상태를 통일적으로 관리 가능.
  • 자동 장애 복구: 서버가 다운되면 자동으로 리더를 재선출하여 무중단 운영 가능.
  • 높은 성능과 확장성: 수천 개의 노드와의 통신도 빠르게 처리할 수 있는 경량 구조.
  • 간단한 API: Java, C 등 다양한 언어로 클라이언트 API를 제공.
  • 안정적인 상태 저장: 변경 이력은 WAL(Write-Ahead Log)로 디스크에 안전하게 기록됨.

관련 용어

  • ZNode: ZooKeeper에서 데이터를 저장하는 노드 단위. 계층적 트리 구조를 갖는다.
  • Watch: ZNode의 상태 변화를 감지하고 알림을 제공하는 비동기 이벤트 처리 방식.
  • Leader Election: ZooKeeper 내부에서 하나의 리더 서버를 자동으로 선출하는 기능.
  • Session: 클라이언트와 ZooKeeper 간의 연결 단위. 타임아웃 시 자동 종료된다.
  • Ensemble: ZooKeeper 클러스터를 구성하는 여러 개의 서버 집합.

주요 솔루션 및 사용 사례

  • 주요 솔루션
    • Apache Kafka: 메시지 브로커에서 파티션 리더 선출과 클러스터 메타데이터 저장에 ZooKeeper를 사용하였다 (단, 최근 버전은 ZooKeeper 제거 중).
    • HBase: 메타데이터 저장과 RegionServer 상태 관리에 활용됨.
    • Apache Solr: 분산 색인 클러스터 구성 및 리더 노드 관리에 사용됨.
    • Mesos / Hadoop YARN: 클러스터 상태 추적과 리소스 관리의 기반 구성 요소로 동작함.
    • Curator: ZooKeeper API의 복잡성을 줄이기 위해 Netflix가 개발한 고급 클라이언트 라이브러리.
  • 사용 사례
    • 분산 락 관리: 여러 노드에서 동시에 접근하지 못하도록 락(lock)을 설정하여 충돌 방지.
    • 리더 선출 자동화: 분산 서버 중 하나를 리더로 지정하고 실패 시 자동 교체.
    • 메타데이터 저장소: 클러스터 구성 정보, 상태, 트래픽 조절 파라미터 등을 중앙 저장.
    • 서비스 디스커버리: 새로운 노드가 등록되면 자동으로 클라이언트가 이를 탐지 가능.
    • 구성 정보의 실시간 변경 적용: 설정 파일 변경 시 서버를 재시작하지 않고 반영 가능.

Go to Top