Kafka 아키텍처

Apache Kafka 입문

Mike Metzger

Data Engineering Consultant

Kafka 구성 요소

  • Kafka 서버
    • 하나 이상의 컴퓨터로 구성된 클러스터
    • 데이터 저장
    • 통신 관리
    • 타 시스템(데이터베이스, 로그 등)과 연동 가능
  • Kafka 클라이언트
    • Kafka 컨슈머로 읽기
    • Kafka 프로듀서로 쓰기
    • 필요에 따라 데이터 처리
Apache Kafka 입문

Kafka 서버

  • 스토리지(Kafka 브로커)
    • 프로듀서가 기록한 데이터를 토픽으로 저장·구성
    • 토픽은 파티션(별도 조각)으로 분할됨
    • 메시지/이벤트는 이벤트 ID 기준으로 파티션에 저장
    • 메시지는 기록된 순서대로 조회됨

Kafka 스토리지와 파티션

1 이미지 출처: https://kafka.apache.org/intro
Apache Kafka 입문

파티션과 복제

  • Kafka는 장애 허용성을 갖춤
  • 한 시스템이 중단돼도 다른 시스템이 데이터 제공
  • 허용 장애 수 = 복제 계수 - 1
  • 최대 복제 계수 = 서버 수
  • 파티션 복제로 고가용성을 달성

Kafka 클러스터, 브로커, 토픽.png

Apache Kafka 입문

예시

Kafka 클러스터, 브로커, 토픽.png

  • 브로커 3개의 Kafka 클러스터
  • 토픽 3개 정의
  • 복제 2x == 시스템 1대 손실 허용
  • 브로커 1: 토픽 1, 토픽 2 복제본
  • 브로커 2: 토픽 2, 토픽 3 복제본
  • 브로커 3: 토픽 1, 토픽 3 복제본
  • 각 토픽은 클러스터 내 브로커 2개에 분산됨
Apache Kafka 입문

1대 장애 예시

Kafka 클러스터, 브로커, 토픽 - 브로커 1대 실패.png

  • 브로커 2가 장애 발생
  • 복제 계수 2x
    • 2 - 1 == 시스템 1대 장애 허용
  • 각 토픽은 여전히 클러스터에 최소 1개 복제본 존재
Apache Kafka 입문

2대 장애 예시

Kafka 클러스터, 브로커, 토픽 - 브로커 2대 실패.png

  • 브로커 2대 장애
  • 복제 계수 2x
  • 허용 범위(시스템 1대) 초과 장애
  • 토픽 2는 클러스터에서 사용 불가
    • 토픽 1, 3은 사용 가능하여 전면 중단은 아님
Apache Kafka 입문

연습해 봅시다!

Apache Kafka 입문

Preparing Video For Download...