목록 보기
컬리 검색이 카프카를 들여다본 이야기 1
백엔드

컬리 검색이 카프카를 들여다본 이야기 1

마켓컬리
마켓컬리
2022년 8월 8일

두줄요약

검색 인덱싱 파이프라인의 메시지 적체와 반복 리밸런싱 원인을 Kafka 소비 설정에서 점검했습니다. Batch Listener와 배치 색인으로 처리 스루풋을 높이고 리밸런싱을 방지했습니다.

문제 상황

  • 복수 토픽의 상품 정보를 Redis에서 조합해 검색 엔진에 색인하는 구조
  • 일괄 메시지 발행 시 소비 속도 부족으로 토픽 적체와 색인 반영 지연
  • 컨슈머 그룹의 반복적인 리밸런싱으로 처리 지연 심화

원인 분석

  • 기본 max.poll.records 500건을 max.poll.interval.ms 5분 이내 처리하지 못하는 상황
  • Record Listener 기반의 건별 메시지 처리와 건별 색인 요청에 따른 낮은 스루풋
  • Redis CPU 사용률 등 과부하 징후 부재로 Kafka 소비 구간 집중 점검

해결 방법

  • max-poll-records: 1 설정으로 단기적으로 리밸런싱 방지
  • Spring Kafka 리스너를 Record Listener에서 Batch Listener로 전환
  • poll 결과 레코드를 묶어 검색 엔진의 배치 색인 요청으로 처리

성능/운영 포인트

  • 배치 소비·배치 색인으로 메시지 소비와 색인 처리 시간 단축
  • 기존 레코드 수·시간 간격에서도 리밸런싱 없이 색인 구축
  • 설정 조정과 리스너 처리 단위 변경을 통한 불필요한 시스템 동작 억제

다음 읽기

#Kafka 주제를 이어서 읽기

컬리 검색이 카프카를 들여다본 이야기 1

카프카 컨슈머 적체와 반복 리밸런싱으로 지연된 검색 색인 문제를 분석했습니다.\nmax.poll과 Spring Kafka 배치 리스너 조정으로 스루풋을 높이고 리밸런싱을 방지했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

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

댓글을 불러오는 중...