12/29

졸용·2025년 12월 29일

TIL

목록 보기
144/144

🔹 Kafka 자세히 알아보기

Image

Kafka는 단순한 메시지 큐가 아니라 분산 로그 시스템이다.
그래서 내부 구성요소들이 “고성능 · 장애복구 · 확장성”을 중심으로 설계되어 있다.



🔹 Broker (브로커)

🔸 정의

  • Kafka 서버 한 대
  • 메시지를 저장하고 전달하는 역할
  • 여러 Broker가 모여 Kafka Cluster를 구성

🔸 Broker의 핵심 책임

기능설명
메시지 저장Topic → Partition 단위로 디스크에 로그 저장
Producer 요청 처리메시지 수신
Consumer 요청 처리메시지 전달
Replica 관리다른 Broker와 데이터 복제

📌 중요 포인트

  • Kafka는 메모리 큐가 아니라 디스크 로그
  • Broker 장애 시에도 데이터 유지 가능


🔹 Topic & Partition

Image

🔸 Topic

  • 메시지의 논리적 분류 단위
  • 예: order-created, payment-completed

🔸 Partition

  • Topic을 쪼갠 물리적 단위
  • 병렬 처리와 확장성을 담당

🔸 핵심 특징

항목설명
순서 보장Partition 내부에서만 순서 보장
병렬 처리Partition 수만큼 Consumer 병렬 처리 가능
확장성Partition 증가 = 처리량 증가

📌 실무 핵심

  • Kafka에서 성능 = Partition 수
  • 단, Partition 늘리면 순서 보장 범위는 더 좁아짐


🔹 Replica & ISR (복제와 장애 복구)

Image

🔸 Replica

  • Partition의 복사본
  • 여러 Broker에 분산 저장

🔸 Leader / Follower

역할설명
LeaderProducer/Consumer와 직접 통신
FollowerLeader 데이터를 복제

🔸 ISR (In-Sync Replicas)

  • Leader와 동기화 상태인 Replica 집합
  • ISR에 속한 Replica만 Leader 승격 가능

📌 왜 중요한가?

  • Leader Broker 장애 → ISR 중 하나가 즉시 Leader 승격
  • 데이터 유실 없이 서비스 지속 가능


🔹 Controller (클러스터의 두뇌)

🔸 정의

  • Kafka Cluster에서 단 하나만 존재
  • Broker 중 하나가 Controller 역할 수행

🔸 Controller의 역할

기능설명
Broker 상태 관리Broker 다운/복구 감지
Leader 선출Partition Leader 재선출
ISR 관리Replica 동기화 상태 관리
메타데이터 관리Topic, Partition 정보 유지

📌 Controller 장애 시

  • 다른 Broker가 자동으로 Controller 승격
  • 서비스 중단 없음


🔹 Zookeeper vs KRaft (RAFT 기반)

Image

Image

🔸 과거: Zookeeper 기반

Zookeeper가 담당했던 것

  • Broker 등록
  • Controller 선출
  • Topic / Partition 메타데이터 저장

❌ 문제점

  • 운영 복잡도 ↑
  • Kafka + Zookeeper 이중 관리
  • 확장성 한계

🔸 현재/미래: KRaft (Kafka Raft)

Kafka 2.8+부터 도입된 Zookeeper 제거 아키텍처

항목ZookeeperKRaft
메타데이터 저장ZookeeperKafka 내부
합의 알고리즘ZABRAFT
운영 복잡도높음낮음
장애 포인트2개1개

📌 실무 기준

  • 신규 Kafka 클러스터 → KRaft 권장
  • 기존 운영 중 → 점진적 마이그레이션 고려


🔹 Producer → Broker 내부 흐름

Image

Image

  1. Producer가 메시지 전송
  2. Partition Leader가 메시지 저장
  3. Follower Replica들이 복제
  4. acks 설정에 따라 Producer 응답

🔸 acks 옵션

의미
acks=0저장 확인 안 함 (빠르나 위험)
acks=1Leader 저장만 확인
acks=allISR 전체 저장 확인 (가장 안전)


🔹 Consumer Group 내부 동작

Image

🔸 Consumer Group

  • 같은 Group ID를 가진 Consumer 묶음
  • Partition은 Group 내에서 1 Consumer만 처리

🔸 Rebalance

  • Consumer 추가/제거 시
  • Partition 재분배 발생

📌 주의

  • Rebalance 동안 메시지 소비 일시 중단
  • Consumer 설계 시 처리 시간 최소화 중요


🔹 전체 구조 요약

[Producer]
     ↓
[Partition Leader (Broker)]
     ↓ (Replica)
[Follower Broker]
     ↓
[Consumer Group]

구성요소핵심 역할
Broker메시지 저장 & 전달
Partition성능 & 순서 단위
Replica / ISR장애 복구
Controller클러스터 제어
KRaft메타데이터 합의


🔹 실무에서 꼭 기억할 포인트

  1. Kafka = 분산 로그 시스템
  2. 성능 튜닝의 핵심은 Partition 설계
  3. 장애 대응은 Replica + ISR
  4. 최신 Kafka는 Zookeeper 제거(KRaft) 방향
  5. 이벤트 기반 아키텍처의 핵심 인프라
profile
꾸준한 공부만이 답이다

0개의 댓글