https://zookeeper.apache.org/doc/current/zookeeperOver.html
위 링크의 공식문서를 해석 및 요약해놓은 글입니다.
ZooKeeper는 구성 정보 유지, 이름 지정, 분산 동기화 제공 및 그룹 서비스 제공을 위한 중앙 집중식 서비스입니다. (자체적으로 분산 파일 시스템으로도 볼 수 있습니다.)
분산 애플리케이션에서 사용됩니다.
zookeeper 분산 애플리케이션을 위한 분산 조정 서비스
분산 애플리케이션을 위한 분산 오픈 소스 서비스
간단한 기본 요소 집합 제공함으로써
→ 더 높은 수준의 서비스 구현하게 돕는다.
높은 수준 서비스 예시) 동기화, 구성유지관리 ,그룹 및 이름 지정
코디네이션은 어렵다.특히 경쟁조건 교착상태 상황을 생각한다면.
→ 주키퍼는 분산 애플리케이션의 구현의 어려움을 줄여준다.
주키퍼는 간단.
주키퍼 사용시, 분산 프로세스가 파일 시스템과 유사한 네임스페이스를 통해 서로 조정 가능 → 이 네임스페이스는 ZNODE라고하는 데이터로 구성. 파일이나 디렉토리와 유사. 주키퍼의 데이터는 메모리에 보관. 따라서, 빠르다
주키퍼의 구현은 고성능, 고가용성, 엄견한 순서의 액세스에 중점
주키퍼는 복제된다.
주키퍼 자체도 앙상블이라는 호스트 집합을 통해 복제됨

주키퍼는 순서 중시.
주키퍼는 빠르다
주키퍼의 네임스페이스는 파일시스템의 네이스페이스와 유사
모든 노드(ZNODE, 주키퍼의 데이터 모델)를 경로로 식별

ZNODE 특징
버전 번호를 포함하는 통계 구조를 유지 → 캐시 검증 및 조정된 업데이트를 허용watch(감시) 컨셉 지원.
( 위의 세션에 따른 임신znode와 결합되어 세션이 종료되면 클라이언트에게 트리거를 보낼 수 있다. → 세션에 따른 트리거가 가능해진다. )
(하둡의 예시, 네임노드 세션 종료시 임시 노드 삭제 후 워치 정책에 따라 워치 트리거로 클라이언트에 패킷 전송
→ 장애극복 조치 트리거
⇒ 네임노드 삭제에 따른 자동장애극복조치 구성됨)
간단한 API
디자인 목표 중 하나나느 간단한 프로그래밍 인터페이스 제공
다음 작업만 제공
구현
상위 수준 구성 요소

request processor 제외한 다른 구성요소를 복제 ex 데이터베이스
복제된 데이터베이스
트랜잭션 로그: ZooKeeper는 모든 데이터 변경(업데이트)을 디스크에 기록하는 트랜잭션 로그를 사용합니다. 이 로그는 ZooKeeper 서버의 안정성과 데이터 일관성을 보장하는 중요한 역할을 합니다. 트랜잭션 로그에 기록된 데이터는 서버 재시작 후에도 복구될 수 있어 데이터의 영속성을 보장합니다.
스냅샷: 일정 시간이 지나거나 일정 수의 트랜잭션이 처리된 후, ZooKeeper는 현재의 전체 데이터 상태를 스냅샷으로 디스크에 저장합니다. 스냅샷은 시스템의 복구 시간을 단축시키고, 오래된 트랜잭션 로그를 정리하는 데 도움을 줍니다.
복구 메커니즘: 시스템 장애가 발생했을 때, ZooKeeper는 디스크에 저장된 가장 최근 스냅샷과 트랜잭션 로그를 사용하여 데이터를 복구합니다. 이 과정은 데이터의 일관성과 무결성을 유지하는 데 필수적입니다.
ZooKeeper의 이러한 데이터 기록 방식은 분산 환경에서 데이터의 안전성을 확보하고, 여러 클라이언트 간의 데이터 동기화 상태를 유지하는 데 중요한 역할을 합니다. 데이터를 디스크에 기록하는 것은, 데이터가 손실되지 않고 장애 상황에서도 복구될 수 있도록 하는 핵심적인 방법입니다.
클라이언트의 요청
동의 처리 프로토콜
원자적 메시징 프로토컬