
25
AI 요약
이 글은 AI가 원문을 분석하여 핵심 내용을 요약한 것입니다.
카프카 컨슈머에 동적 쓰로틀링 적용하기
이 게시물은 카프카를 사용하는 스프링 환경에서 메시지 처리 속도를 동적으로 조절하는 필요성과 다양한 쓰로틀링 기법을 소개합니다.동적 쓰로틀링의 필요성
- 컨슈머 수를 늘려도 외부 시스템(DB, API)의 리소스 한계로 처리량 한계 존재
- 리밸런싱 문제와 외부 시스템 부하 고려 필요
동적 쓰로틀링 구현 방법
- CPU 사용률 모니터링 객체(CpuUsageMonitorClient)와 지연 시간 계산기(CpuMonitoringDelayTimeCalculator) 정의
- CPU 사용률에 따라 2차함수 형태로 지연 시간을 동적으로 조절
- Thread.sleep()을 이용한 간단한 지연 적용과 그 한계
- KafkaConsumer의 pause(), resume() 메서드를 활용해 리밸런싱 없이 메시지 수신 제어
- 스프링의 MessageListenerContainer를 이용해 개별 컨슈머 단위로 pause/resume 제어
테스트 및 고려사항
- @EmbeddedKafka를 이용한 in-memory 카프카 테스트
- max.poll.interval.ms 설정과 sleep 시간 고려 필요
- pause() 시 poll()은 계속 호출돼 리밸런싱 방지