Skip to content

[Feature] 대기열 활성 스케줄러 관련 예외 및 활성 토큰 만료 처리 #123

@miiiiiin

Description

@miiiiiin

📌 기능 설명

  1. 스케줄러 동시성 제어 설정 (서버 N대 돌릴 경우의 중복 처리 상황 방지)
  • QueueScheduler.java에서 현재 canExecute 메서드는 get(조회) -> 비교 -> set(갱신) 순서로 동작
  • 만약 서버가 3대(Scale-out)라면, 3대의 서버가 동시에 get을 수행하여 모두 "실행 가능"으로 판단할 수 있음
  • 그리고 서버가 여러 대(Scale-out)일 때, canExecute를 동시에 통과해버리면 트래픽이 3배로 폭주하게 됨
  • 이를 방지하기 위해 분산 락 적용
  1. DB/Redis 장애 시 스케줄러 중단 방지 처리
  2. 활성열 만료 토큰 정리 (사용자가 활성 상태가 되었는데 주문을 안 하고 나가버릴 경우, 만료된 토큰 정리하고, 활성열 카운트 갱신되도록 처리)

🎯 목적 / 기대 효과

실무 운영 환경(특히 다중 서버 환경 및 장애 상황)을 고려했을 때, 치명적인 예외 상황 방지 위한 목적

📋 구현 범위

  • API 설계
  • Service/Domain 변경
  • DB 변경 여부
  • 테스트 포함

🔗 관련 이슈(Optional)

#95

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions