리눅스/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 방식 존재
- 1. rebalacing 트리거
eager 모드 rebalacing
- kafka의 기본 리밸런싱 방식
- 매우 빠르고 단순하나, rebalacing도중에 메시지 소비가 중단될 수 있는 단점 존재
- consumer가 동시에 rebalacing에 참여한다.
- 기존에 할당된 partition을 즉시 반납 및 다시 할당 받는 방식
- 과정...
- 1. group coordinator가 rebalacing trigger를 한다.
- 2. 모든 consumer가 할당된 partition을 반납한다.
- 3. coordinator는 각 consumer에게 새로운 파티션 할당을 전달
- 4. 할당 완료 후 consumer는 새로 할당된 partition에서 메시지 소비 재개한다.
- 단점
- 모든 consumer가 partition을 반납하니 rebalacing 도중에 메시지 소비가 중단됨
- 이 과정이 자주 발생하면 성능에 큰 영향을 준다.
- 모든 consumer가 partition을 반납하니 rebalacing 도중에 메시지 소비가 중단됨
- 장점
- 빠른 rebalacing속도
- 구현의 간단함
cooperative 모드 rebalacing
- 중단 없는 rebalacing을 목표로 설계됨
- 할당된 partition들을 즉시 반납이 아니라, 점진적으로 rebalacing을 하며 소비 중단을 최소화한다.
- 특징
- 점진적인 rebalacing
- 즉시 반납이 아닌, 새로 할당된 partition을 소비한 후에 기존 partition을 반납.
- 적응형 rebalacing
- rebalacing이 필요한 상황에서, 새로 할당된 partition만 추가하며 계속 소비할 수 있게 함.
- 대규모 그룹에 유리
- 점진적인 rebalacing
- 단점
- 복잡해짐