리눅스/kafka

kafka rebalacing의 프로토콜, Eager 모드 및 cooperative 모드

정지홍 2024. 10. 21. 12:27

kafka Rebalancing의 기본 프로토콜

  • rebalancing의 consumer group안에서 파티션을 효율적으로 할당하기 위한 것
  • 다음과 같은 단계로 구성...
    • 1. rebalacing 트리거
      • consumer가 group에 추가,삭제 될때 트리거한다. 모든 컨슈머들에게 preparing rebalacing을 알림
      • rebalacing에는 eager , cooperative 모드 존재
    • 2. consumer들의 모든 파티션 할당 취소( 취소했으니 메시지도 못읽음)
    • 3. partition assignor 알고리즘으로 다시 할당
      • range , round robin , sticky 방식 존재

 


eager 모드 rebalacing

  • kafka의 기본 리밸런싱 방식
  • 매우 빠르고 단순하나, rebalacing도중에 메시지 소비가 중단될 수 있는 단점 존재
  • consumer가 동시에 rebalacing에 참여한다.
    • 기존에 할당된 partition을 즉시 반납 및 다시 할당 받는 방식
  • 과정...
    • 1. group coordinator가 rebalacing trigger를 한다.
    • 2. 모든 consumer가 할당된 partition을 반납한다.
    • 3. coordinator는 각 consumer에게 새로운 파티션 할당을 전달
    • 4. 할당 완료 후 consumer는 새로 할당된 partition에서 메시지 소비 재개한다.
  • 단점
    • 모든 consumer가 partition을 반납하니 rebalacing 도중에 메시지 소비가 중단됨
      • 이 과정이 자주 발생하면 성능에 큰 영향을 준다.
  • 장점
    • 빠른 rebalacing속도
    • 구현의 간단함

 

 


cooperative 모드 rebalacing

  • 중단 없는 rebalacing을 목표로 설계됨
  • 할당된 partition들을 즉시 반납이 아니라, 점진적으로 rebalacing을 하며 소비 중단을 최소화한다.
  • 특징
    • 점진적인 rebalacing
      • 즉시 반납이 아닌, 새로 할당된 partition을 소비한 후에 기존 partition을 반납.
    • 적응형 rebalacing
      • rebalacing이 필요한 상황에서, 새로 할당된 partition만 추가하며 계속 소비할 수 있게 함.
    • 대규모 그룹에 유리
  • 단점
    • 복잡해짐