Kafka Rebalance 성능 개선기 (consumer 프로토콜)
·
Infra/Kafka
들어가기 전우리 팀은 Reactor Kafka 기반으로 직접 구성한 컨슈머 구현체에서 classic 프로토콜을 사용해 왔다. 배포로 pod가 교체되는 몇 분 동안 컨슈머 랙이 쌓였다가 줄어드는 일이 반복됐고, 컨슈머 수가 늘면서 소비가 지연되는 구간도 길어졌다. 확인해 보니 원인은 크게 두 가지였다.eager 리밸런스에서 기존 멤버가 보유 파티션을 모두 반납했다.pod 이름으로 만든 정적 멤버 ID가 배포마다 달라져, 종료된 멤버의 세션 타임아웃을 기다려야 했다.두 문제를 해결하려고 Spring Boot와 Kafka를 4.x로 올린 뒤 KIP-848의 consumer 프로토콜을 적용하고, 컨슈머 구현도 Spring Kafka 컨테이너로 교체했다. 이 글에는 consumer 프로토콜로 바꾸면서 달라진 동작..