[12일차] | 대규모 시스템 설계 기초2 | 책너두

Heechan Kang·6일 전
0
post-thumbnail

푸시 vs 풀

푸시 모델

  • 장점: 지연시간이 짧다.
  • 단점
    • 소비자에게 큰 부하가 걸릴 수 있다.
    • 소비자는 생상자의 속도에 맞출수 있도록 컴퓨팅 자원을 더 많이 확보해두어야 한다.

풀 모델

  • 장점

    • 메시지 소비 속도를 소비자가 결정한다.
      • 소비자별 실시간/배치처리 등 다양한 방식으로 메시지를 처리할 수 있다.
    • 배치 처리에 적합하다.
  • 단점

    • 브로커에 메시지가 없어도 소비자는 계속 브로커에게 요청을 보내야 한다.
      • 이로인해 소비자측 자원이 낭비된다.
  • 위와 같은 이유로 인해, 대체로 풀 모델을 사용한다.

풀 모델의 동작 흐름
  1. 소비자가 코디네이터를 통해 소비자 그룹 1에 합류하고 토픽 A를 구독한다.
  2. 소비자가 파티션 2를 할당받는다.
  3. 파티션 2를 가진 브로커 2에게 메시지를 수신한다.
  4. 데이터를 처리하고 오프셋을 갱신한다.

소비자 재조정

  • 소비자 재조정(Consumer Rebalancing)은 어떤 소비자가 어떤 파티션을 할당받을지 결정하는 과정이다.
  • 코디네이터(Consumer Coordinator)가 이를 담당한다.
    • 코디네이터는 하트비트를 통해 소비자의 상태를 확인한다.
    • 소비자가 죽거나 새로운 소비자가 합류하면, 코디네이터가 리더 선출과 재조정을 수행한다.
    • 이외에도 파티션 내의 오프셋을 관리하거나, 소비자 그룹의 상태를 관리한다.

상태 저장소

  • 메시지 큐 브로커의 상태저장소에는 아래와 같은 정보가 저장된다.
    • 소비자에 대한 파티션 할당 정보
    • 각 소비자 그룹이 각 파티션에서 마지막으로 가져간 오프셋 정보

메타데이터 저장소

  • 메타데이터는 자주 변경되지 않으면서, 양도 적다
  • 하지만 높은 일관성이 요구된다.

주키퍼

  • 주키퍼는 계층적 키-값 저장소이다.
  • 분산 시스템의 정보를 저장하는데 적합하다.

복제

  • 분산 시스템에서 장애는 불가피하다.
    • 따라서 데이터 손실을 방지하기 위해 복제가 필요하다.
  • 생산자는 파티션에 메시지를 보낼 때, 오직 리더에게만 보낸다.
    • 리더는 다른 브로커에게 메시지를 복제한다.
    • 어느 특정한 임계치 이상 복제가 완료되면, 리더는 클라이언트에게 응답을 보낸다.
  • 사본을 파티션에 어떻게 분할할지 기술하는 것을 분산 계획(replica distribution plan)이라고 한다.
    • 조정 시스템에 의해 선출된 리더가 분산 계획을 수행한다.
    • 만들어진 분산 계획은 메타데이터 저장소(주키퍼)에 저장된다.

사본 동기화

  • 사본 동기화는 리더와 팔로워 사이의 데이터 일관성을 유지하는 것이다.
  • 동기화된 사본(In-Sync Replica, ISR)은 리더와 동일한 데이터를 가지고 있다.
  • 합의 오프셋(Committed Offset)은 ISR 집합 내에서 모든 사본이 동일한 오프셋을 가지고 있다는 것을 의미한다.
    • 이를 통해 영속성과 실시간성 사이의 타협점을 찾을 수 있다.

ACK=all

  • ACK=all은 모든 ISR이 메시지를 받은 후에만 리더가 클라이언트에게 응답을 보내는 방식이다.
  • 모든 ISR이 메시지를 받아야하는 만큼 지연시간이 발생한다.
  • 하지만 그만큼 영속성을 보장할 수 있다.

ACK=1

  • 리더가 메시지를 저장하면 바로 클라이언트에게 응답을 보내는 방식이다.
  • 응답시간은 개선되지만, 리더가 죽으면 데이터 손실이 발생할 수 있다.

ACK=0

  • 생산자는 응답을 기다리지도, 재시도를 하지도 않는다.
  • 지표수집이나 로깅 등에서, 데이터를 잃더라도 크게 문제가 되지 않는 경우에 사용한다.
profile
안녕하세요!

0개의 댓글