카프카 컨슈머에 동적 쓰로틀링 적용하기
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()은 계속 호출돼 리밸런싱 방지

연관 게시글