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

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

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

두줄요약

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

문제 상황

  • 복수 토픽의 상품 정보를 Redis에서 조합해 검색 엔진에 색인하는 구조
  • 메시지 발행 속도를 따라가지 못한 컨슈머 적체와 검색 색인 지연
  • 컨슈머 그룹 내 반복적인 리밸런싱 발생

원인 분석

  • 기본 max.poll 설정에서 500개 레코드 처리 시간이 5분을 초과하는 상황
  • Record Listener 기반의 건별 색인 요청으로 낮아진 메시지 처리 스루풋
  • Redis 지표상 과부하 정황 부재

해결 방법

  • max-poll-records를 1로 조정해 처리 시간 초과에 따른 리밸런싱 방지
  • Spring Kafka 리스너 타입을 Batch Listener로 전환
  • poll로 가져온 레코드를 묶어 검색 엔진의 배치 색인 요청으로 처리

성능/운영 포인트

  • 배치 처리로 메시지 소비와 색인 처리 시간 단축
  • 기존 레코드 수·시간 간격에서도 리밸런싱 없는 색인 구축

다음 읽기

#Kafka 주제를 이어서 읽기

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

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

마켓컬리
마켓컬리
백엔드

댓글 0개

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

댓글을 불러오는 중...