목록 보기
분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기
백엔드

분산 시스템 환경에서 Kafka Consumer 오프셋 이동하기

마켓컬리
마켓컬리
2024년 12월 2일

두줄요약

Spring Kafka의 seek 기능으로 컨슈머를 멈추지 않고 오프셋을 이동하는 방법을 정리했습니다. 분산 환경에서는 HTTP API와 Redis Pub/Sub로 요청을 전파해 그룹 단위 재처리를 구현했습니다.

문제 상황

  • 분산 환경의 Kafka Consumer에서 메시지 누락이나 의도적 재처리를 위해 오프셋 이동이 필요한 상황
  • 기존 CLI 기반 재설정은 컨슈머 그룹 비활성 상태를 요구해 중단과 재기동이 불가피한 제약
  • 권한 의존성과 가용성 저하, lag 처리 지연, 다른 컨슈머 영향이 함께 발생하는 문제

원인 분석

  • Kafka의 오프셋 재설정과 Admin API가 모두 비활성 컨슈머 그룹을 전제로 하는 구조
  • 특정 토픽, 파티션만 조정해도 컨슈머 그룹 전체 중단이 필요해 분산 운영에 비효율적

해결 방법

  • Spring Kafka의 ConsumerSeekAware와 ConsumerSeekCallback, AbstractConsumerSeekAware를 활용한 런타임 오프셋 이동
  • seekToBeginning 등 seek 계열 API로 애플리케이션 중단 없이 재처리 수행
  • HTTP API와 Redis Pub/Sub로 분산 서버에 요청을 전파해 컨슈머 그룹 수준으로 확장

댓글 0

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...