Pasted image 20230920173141.png

Zookeeper?

  • 분산 처리 어플리케이션을 위한 코디네이터 시스템
    • HA 구성 시 서비스간 데이터 공유, 서버 Health Check등을 해주는 역할

역할

  1. 설정 관리 (Configuration Management)

    • Cluster의 설정 정보를 최신화 유지를 위한 조율 시스템
  2. 클러스터 관리 (Cluster Management)

    • Cluster 추가 / 삭제 시 정보를 서버간 공유
  3. 리더 채택 (Leader Selection)

    • Multi App중 Leader Node를 선정할 로직 생성
    • 주로 복제된 여러 노드 중 연산이 이루어지는 1개의 노드를 택하는데 사용
  4. 락/동기화 서비스 ( Lock and Synchronization Service)

    • Cluster 전체를 대상으로 동기화(Lock)하여 경쟁 상태를 방지하기 위해 사용
    • 연산이 빈번한 경우 경쟁 상태가 될 수 있다
    • 경쟁 상태 여러 프로세스가 동일 자원 접근 시도 데이터 불일치 야기

구성

Server

1개의 Leader, N개의 Follwer, N개의 Observer로 구성된다.
기본적으로 Ensemble 을 구성하기 위해 3개 이상의 홀수 Node가 존재해야한다.

  1. Leader
    • Client가 제출한 모든 요청을 및 데이터 변경을 관리하는 역할
    • 다른 서버들에게 상태 정보 분산
    • 새로운 요청 처리
    • 데이터 동기화
  2. Follwer
    • Client가 제출한 요청을 Leader에게 전달 및 처리
    • Leader Node의 상태를 동기화함
      • Leader에게 문제가 발생하면 Voting을 통해 Leader로 선출됨
    • Follwer가 많아지면 Throuput은 늘어나지만, Failover시 Voting에 시간 소모가 많음
  3. Observer
    • Follwer Node의 일종
      • 차이점 : Voting 권한이 없다.
        • Leader가 될 수 없는 Node이다
    • Data Center의 Bridge, Message Bus의 Link 등의 역할로 활용

Request Processor

Client가 제출한 요청을 Chain으로 연결시켜 Sequential하게 처리하는 프로세스
일반적으로 Single-Thread로 처리함

  • Leader
    • Follower / Client에게 받은 Transaction을 처리해줌
  • Follower / Obserber
    • Client에게 받은 Transaction을 Leader에게 전달

Atomic Broadcast

Zookeeper Server의 데이터 일관성을 ZAB을 이용하여 보장

  • zab : Zookeeper Atomic Broadcast Prodocol
    Pasted image 20230920184247.png
  • 수행 과정
    1. Client에게 요청받은 Leader은 Follower에게 Propose 요청
      • Propose : 수행여부
    2. Propose 받은 Follwer은 해당 Transaction 수행 허용 여부를 Act로 Leader에게 전달
    3. Act를 받은 Leader은 Transaction 처리 명령을 Follwer들에게 Broadcast / Commit

In-Memory DB

Znode를 적재하는 DB

  • Local FS에 In-Memory DB정보를 Replication할 수 있다.
  • Transaction Log가 일정량 이상 되면 Snapshot 후 In-Memory 데이터는 삭제한다.
    • 장애 발생 시 Snapshot을 이용하여 복구

ZNode

Data / 계층을 생성하는 단위
Tree 구조로 구성되어 있다.
Pasted image 20230920184741.png

보유 데이터

  1. ACL( Access Control List )
    1. 접근 권한
  2. ACL Permissions
    1. 행위 권한 ( CRUD 등 )
  3. schemas
    1. 접근 위치 권한 (IP 등)
  4. stat
    1. Node의 정보( 생성 시간, Transaction ID…)

Node 종류

  1. Persistent Node
    1. 영구 노드 ( Non-Falsh)
  2. Ephemeral Node
    1. 휘발성 노드 (Flash )
  3. Sequence Node
    1. 순서가 있는 노드

Watcher

Znode의 변경 사항을 Client / Server에게 알려주는 역할

  • Znode에 Watcher를 등록하여 사용
    • 모니터링 / 알람 역할

Client

zookeeper의 In-Memory DB를 사용하는 Application

  • Client는 Server에게 Heart beat를 전송한다
    • timeout 발생
      • client -> server
        • server/Network Issue, 다른 서버에 연결시도
      • server -> client
        • client/Network Issue, 해당 Session종료

개인적으로 공부한 내용 포스팅 중
잘못된 정보는 지적해주시면 좋겠습니다!

+ Recent posts