[KAFKA] 토픽 / 파티션 / 컨슈머 그룹 관계

2025. 1. 31. 00:08·KAFKA
728x90

컨슈머 그룹(Consumer Group), 파티션(Partition), 컨슈머(Consumer) 요약

  1. 토픽(Topic) → 여러 개의 파티션(Partition)
    • 하나의 토픽은 여러 개의 파티션으로 나눔
    • 각 파티션은 독립적으로 데이터를 저장하고 처리
  2. 컨슈머 그룹(Consumer Group) → 여러 개의 컨슈머(Consumer)
    • 컨슈머 그룹은 하나 이상의 컨슈머로 구성됩니다.
    • 같은 컨슈머 그룹에 속한 컨슈머들은 서로 다른 파티션을 소비(consume)
    • 컨슈머 개수 ≤ 파티션 개수 이므로 컨슈머 수보다 파티션이 많아야 최적의 성능을 발휘할 수 있음
  3. 파티션 ↔ 컨슈머 매핑
    • 하나의 파티션은 하나의 컨슈머에게만 할당(동시에 여러 컨슈머가 같은 파티션을 읽을 수 없음)
    • 한 컨슈머는 여러 개의 파티션을 담당할 수 있음.
  4. 컨슈머 그룹을 활용한 병렬 처리
    • 같은 컨슈머 그룹 내의 컨슈머들이 서로 다른 파티션을 병렬로 소비함.
    • 컨슈머가 죽으면 남은 컨슈머가 해당 파티션을 다시 분배받음 (리밸런싱 발생).

관계 예시

예시 그림

  1. 토픽 (Topic)
    • 하나의 토픽(TOPIC X)이 여러 개의 파티션(Partition 0, Partition 1) 으로 나뉘어 있음
  2. 컨슈머 그룹 (Consumer Group 1)
    • 컨슈머 그룹은 하나 이상의 컨슈머로 구성. (예: Consumer Group 1)
    • 같은 그룹에 속한 컨슈머들은 각각 다른 파티션을 할당받아 데이터 소비(Consume)
  3. 파티션 ↔ 컨슈머 관계
    • 하나의 파티션은 하나의 컨슈머에게만 할당
    • 하지만 한 컨슈머는 여러 개의 파티션을 소비할 수 있음
  4. 컨슈머 개수 < 파티션 개수
    • 컨슈머 수(2개) <= 파티션 수(2개)이므로 각각 1개의 파티션을 담당함
    • 만약 컨슈머가 1개만 있다면 모든 파티션을 하나의 컨슈머가 소비
    • 반대로 파티션이 2개고 컨슈머가 3개면 1개 컨슈머는 유휴 상태(idle)가 됨
  5. 컨슈머 장애 발생 시 리밸런싱 (Rebalancing)
    • 컨슈머 B가 죽으면 컨슈머 A가 모든 파티션을 할당받아 처리
    • 새로운 컨슈머가 그룹에 추가되면 Kafka는 자동으로 파티션을 재분배
저작자표시

'KAFKA' 카테고리의 다른 글

[KAFKA] 기본 개념  (0) 2022.09.06
'KAFKA' 카테고리의 다른 글
  • [KAFKA] 기본 개념
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    SQL
    AWS
    go
    프로그래머스
    java
    IntelliJ
    Elk
    cleancode
    JPA
    이펙티브코틀린
    자바
    클린코드
    splunk
    코틀린
    ElasticSearch
    엘라스틱서치
    docker
    이펙티브 코틀린
    Kafka
    Spring
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KAFKA] 토픽 / 파티션 / 컨슈머 그룹 관계
상단으로

티스토리툴바