ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 토큰 라운드 로빈문제
    공부일기장 2026. 6. 18. 09:46
    728x90
    반응형

    ASIS:
    한국투자증권 Open API는 appKey/token 기준으로 초당 요청 제한이 있어, 단일 서버 내에서는 KisTokenDispatchService에서 KIS-V1/V2/V3 키를 라운드로빈으로 선택하고, key별 windowStartMillis, usedInWindow, lastReservedAtMillis, cooldownUntilMillis 상태를 메모리에서 관리하여 초당 요청 수를 제한하고 있었다.

    문제발생:
    단일 JVM에서는 해당 로컬 카운터로 어느 정도 제어가 가능하지만, api/batch/worker처럼 여러 서버 인스턴스가 동시에 같은 KIS appKey/token을 사용할 경우 각 서버가 요청 카운터와 윈도우 시간을 별도로 관리한다. 따라서 전체 합산 요청 수가 한국투자증권의 초당 제한을 초과하여 간헐적으로 429 또는 초당 거래건수 초과 오류가 발생할 수 있다. 특히 worker의 종목 수집 로직도 KIS API를 호출하므로 api/batch의 호출량과 합산되어야 한다.

    TOBE:
    Redis 기반 분산 rate limiter를 도입해 appKey별 초당 요청 수, 윈도우 시간, 쿨다운 상태를 모든 서버가 공유하도록 한다. 제한 체크는 토큰을 가져오는 시점이 아니라 실제 KIS HTTP 요청 직전에 수행하고, Redis Lua script 등 atomic 방식으로 acquire를 처리하여 다중 서버에서도 전체 호출량이 제한을 넘지 않도록 한다.

    728x90
    반응형

    '공부일기장' 카테고리의 다른 글

    HTTP method 공부 (GET,POST,HEAD,TRACE,OPTIONS)  (0) 2025.12.22
    SQL 최적화 테스트  (0) 2024.05.02
    minikube install  (0) 2024.05.02
    수학공부하자.. 할거없다..  (0) 2024.04.23
    토비의 스프링 공부 -1  (0) 2023.12.12
Designed by Tistory.