728x90
컨슈머 그룹(Consumer Group), 파티션(Partition), 컨슈머(Consumer) 요약
- 토픽(Topic) → 여러 개의 파티션(Partition)
- 하나의 토픽은 여러 개의 파티션으로 나눔
- 각 파티션은 독립적으로 데이터를 저장하고 처리
- 컨슈머 그룹(Consumer Group) → 여러 개의 컨슈머(Consumer)
- 컨슈머 그룹은 하나 이상의 컨슈머로 구성됩니다.
- 같은 컨슈머 그룹에 속한 컨슈머들은 서로 다른 파티션을 소비(consume)
- 컨슈머 개수 ≤ 파티션 개수 이므로 컨슈머 수보다 파티션이 많아야 최적의 성능을 발휘할 수 있음
- 파티션 ↔ 컨슈머 매핑
- 하나의 파티션은 하나의 컨슈머에게만 할당(동시에 여러 컨슈머가 같은 파티션을 읽을 수 없음)
- 한 컨슈머는 여러 개의 파티션을 담당할 수 있음.
- 컨슈머 그룹을 활용한 병렬 처리
- 같은 컨슈머 그룹 내의 컨슈머들이 서로 다른 파티션을 병렬로 소비함.
- 컨슈머가 죽으면 남은 컨슈머가 해당 파티션을 다시 분배받음 (리밸런싱 발생).
관계 예시
- 토픽 (Topic)
- 하나의 토픽(TOPIC X)이 여러 개의 파티션(Partition 0, Partition 1) 으로 나뉘어 있음
- 컨슈머 그룹 (Consumer Group 1)
- 컨슈머 그룹은 하나 이상의 컨슈머로 구성. (예: Consumer Group 1)
- 같은 그룹에 속한 컨슈머들은 각각 다른 파티션을 할당받아 데이터 소비(Consume)
- 파티션 ↔ 컨슈머 관계
- 하나의 파티션은 하나의 컨슈머에게만 할당
- 하지만 한 컨슈머는 여러 개의 파티션을 소비할 수 있음
- 컨슈머 개수 < 파티션 개수
- 컨슈머 수(2개) <= 파티션 수(2개)이므로 각각 1개의 파티션을 담당함
- 만약 컨슈머가 1개만 있다면 모든 파티션을 하나의 컨슈머가 소비
- 반대로 파티션이 2개고 컨슈머가 3개면 1개 컨슈머는 유휴 상태(idle)가 됨
- 컨슈머 장애 발생 시 리밸런싱 (Rebalancing)
- 컨슈머 B가 죽으면 컨슈머 A가 모든 파티션을 할당받아 처리
- 새로운 컨슈머가 그룹에 추가되면 Kafka는 자동으로 파티션을 재분배
'KAFKA' 카테고리의 다른 글
[KAFKA] 기본 개념 (0) | 2022.09.06 |
---|