카프카/Java 기반 카프카 클라이언트 구현, Consumer 내부 메커니즘 1

Group Cordinator와 Consumer의 Rebalance 상세 메커니즘

webmaster 2025. 10. 18. 00:18
728x90

Group coordinator와 Consumer의 Rebalance

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

동작 순서

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

Consumer Group Status

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

실습하기

1) Pizza Producer 실행

2) ConsumerWakeup 실행

Kafka log(Broker)
Cunsumer 로그

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

3) ConsumerWakeup Shutdown

Kafka log(Broker)

 

728x90