본문 바로가기
Bigdata/Zookeeper

Zookeeper 개념 및 아키텍처

by 빅경 2024. 5. 21.
728x90
반응형

분산 시스템이란?: 네트워크를 통해 여럿의 컴퓨터에서 돌아가는 시스템

분산 시스템에서의 잇슈

  • 분산된 시스템 간의 정보 공유?
  • 클러스터에 있는 서버들의 상태 체크?
  • 분산된 서버들 간에 동기화를 위해 잠금(Lock)?

Zookeeper - 코디네이션 서비스 시스템(Coordination Service)

주키퍼 기능

  • 분산 환경에서 노드 간에 조정자 역할을 수행하는 서비스
  • 노드 간 정보 공유, 잠금, 이벤트 등의 기능 수행
  • 여러 개의 노드에 작업을 분산시켜주는 부하 분산 기능 제공
  • 서버에서 처리된 결과를 다른 서버에게 동기화 할때 잠금(Lock) 처리 수행
  • 서버 장애 시 대기 서버가 기존 서버를 대신 처리할 수 있도록 장애 상황 판단 및 복구
  • 주키퍼는 관리 데이터를 메모리상에 유지함

Zookeeper 아키텍처

  • ZooKeeper는 기본적으로 복수 개의 ZooKeeper 서버의 집합인 Ensemble로 구성
  • Ensemble은 leader-follower 구조를 사용하며, Leader가 Follower에게 동기화 명령을 내림

(위 그림에서 Server는 주키퍼, Client는 카프카)

서버 여러 대를 앙상블(클러스터)로 구성하고, 분산 어플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고 받는다.

쿼럼(Quorum)

  • 단어의미: 합의체가 의사를 진행시키거나 의결을 하는 데 필요한 최소한도의 인원 수
  • 주키퍼: 주키퍼 앙상블을 이루고 있는 모든 서버 중 과반수 서버로 이루어진 그룹을 말함. 5대의 앙상블일 때 정상적인 서버 3대를 쿼럼이라고 함

트랜잭션 처리

  • Leader에게 Request 전달
    • 새로운 트랜잭션 요청이 Follower에게 도착하였을 경우, Follower는 Leader에게 요청을 전달
  • Propose
    • Propose는 Leader가 Quorum을 구성하는 서버들에게 트랙잭션을 수행해도 되는지 여부를 요청하는 과정을 의미
  • Ack
    • Quorum을 구성하는 서버들은 Leader로 부터 Propose 요청을 받으면, 트랙잭션을 수행해도 된다는 Ack 응답을 Leader에게 전송
  • Commit
    • 모든 Quorum으로 부터 Ack를 받으면, Leader는 트랙잭션을 처리하라는 Commit 명령을 broadcast 형태로 모든 Follower에 전파한다. ZooKeeper에서는 Commit 명령을 전달할 때, ZAB(ZooKeeper Atomic Broadcast) 알고리즘을 사용한다. Atomic Broadcast는 broacast 방식 중 하나로, 멀티 프로세스 시스템에서 모든 프로세스에게 동일한 순서로 메시지가 전달된다는 것을 의미한다.

이러한 과정을 도식화한 그림은 아래와 같다

Watch 기능

  • 주키퍼 클라이언트가 특정 znode에 watch를 걸어 놓고 해당 znode가 변경되었음을 클라이언트에 알려줌
  • 해당 znode가 변경되었을 때 클라이언트로 callback 호출을 날림

Zookeeper 데이터 모델

ZNODE

  • 디렉토리(트리) 구조 기반의 데이터 저장소
  • znode는 데이터(상태, 구성 및 위치 정보 등)가 저장된 객체를 제공함(key-value)
  • ZNode는 최대 1MB의 데이터를 저장할 수 있음

노드 종류

Persistent Node

  • 노드에 데이터를 저장하면 삭제하지 않는 이상 영구히 저장되는 노드
  • 트랜잭션 로그, 스냅샷, 상태 이미지 등을 유지함

Ephemeral Node

  • 노드를 생성한 클라이언트의 세션이 연결되어 있을 경우만 유효하며, 연결이 끊어지는 순간 삭제됨
  • 이를 통해서 클라이언트가 연결되어 있는지 아닌지 판단함

Sequence Node

  • 노드를 생성할 때 자동으로 일련 번호가 붙는 노드
  • 주로 분산 Lock을 구현하는데 사용

 

728x90
반응형

'Bigdata > Zookeeper' 카테고리의 다른 글

Zookeeper Mac 설치 및 실행  (0) 2024.05.28
Apache Curator Example & Description  (0) 2024.05.22