728x90
Group coordinator와 Consumer의 Rebalance



- Broker의 Group Coordinator는 아래 상황에서, Consumer Group내의 Consumer들에게 파티션을 재할당하는 Rebalancing을 수행하도록 지시한다.
- Consumer Group 내에 새로운 Consumer가 추가되거나 기존 Consumer가 종료될 때
- Topic에 새로운 Partition이 추가될 때
동작 순서

- Consumer Group 내의 Consumer가 브로커에 최초 접속 요청 시 Group Coordinator 생성한다
- 동일한 group.id로 여러개의 Consumer로 Broker의 Group Coordinator 접근한다
- 가장 빨리 Group에 Join을 요청한 Consumer에게 Consumer Group 내의 Leader Consumer로 지정한다.,
- Leader로 지정된 Consumer는 파티션 할당 전략에 따라 Consumer들에게 파티션을 할당한다.
- Leader Consumer는 최종 할당된 파티션 정보를 Group Coordinator에게 전달한다.
- 정보 전달 성공을 공유한 뒤 개별 Consumer들은 할당된 파티션에서 메시지를 읽는다.
Consumer Group Status

- empty
- Consumer Group은 존재하지만 Consumer가 없는 상태
- rebalance
- 아래와 같은 케이스에서 Rebalance가 발생한다
- 새로운 Consumer가 조인 요청을 하거나
- Heartbeat가 문제가 되거나, 특정 Consumer가 종료되거나, 새로운 Consumer가 조인되거나, 새로운 파티션이 토픽에 추가될 경우
- 아래와 같은 케이스에서 Rebalance가 발생한다
- Stable
- Rebalance가 종료되고 안정적으로 Consumer가 운영되는 상태
실습하기
1) Pizza Producer 실행
2) ConsumerWakeup 실행


- 로그를 살펴보면, Partition 3개를 받아 Rebalance를 하는 것을 확인할 수 있다.
3) ConsumerWakeup Shutdown

728x90
'카프카 > Java 기반 카프카 클라이언트 구현, Consumer 내부 메커니즘 1' 카테고리의 다른 글
| Consumer의 auto.offset.reset (0) | 2025.10.06 |
|---|---|
| Consumer의 읽기 Commit 이해 (0) | 2025.10.06 |
| wakeup을 이용한 Consumer 효과적 종료 (0) | 2025.10.06 |
| Consumer Fetcher 관련 주요 파라미터와 메커니즘 이해 (0) | 2025.10.06 |
| KafkaConsumer 주요 구성 요소와 Poll() 메소드 (0) | 2025.10.06 |