consumer group은 Kafka의 확장 가능하고 내결함성 있는 소비 메커니즘으로, group 내 consumer들이 topic의 partition 소비 작업을 자동 rebalancing과 함께 분담합니다. 이를 깊이 이해하는 것이 확장 가능한 Kafka consumer를 구축하는 열쇠입니다.
consumer group이 작업을 분배하는 방식
CONSUMER GROUP = topic을 소비하기 위해 협력하는 consumer들:
→ 각 PARTITION은 group 내 정확히 한 consumer에게 할당됨(한 번에)
→ partition이 group의 consumer들에 분배됨 → PARALLEL 소비
→ 예: 6개 partition, 3개 consumer → 각 2개 partition
→ consumer 추가로 소비 확장(partition 수까지 — 초과 consumer는 유휴)
Rebalancing
REBALANCING → group 멤버십이 바뀔 때 partition 재분배:
→ consumer가 JOIN(확장) 또는 LEAVE/FAIL(축소/크래시) → 현재 consumer들 사이에서
partition 재할당
→ 내결함성(실패한 consumer의 partition이 다른 consumer로) 및 탄력성 제공
⚠️ rebalance 동안 소비가 잠시 중단됨(비용); 잦은 rebalance는 해로움
→ 불필요한 rebalance 최소화; 최신 프로토콜이 영향 감소(cooperative rebalancing)
