Skip to content

[Phase6] Issue #12: SlidingWindowCounterService 구현 #12

Description

@724thomas

Phase 목표: 나머지 4개 알고리즘 구현

목표: Sliding Window Counter 알고리즘 구현

작업 내용

  • SlidingWindowCounterService 클래스 구현
  • 현재/이전 윈도우 카운터 조합 로직
  • 가중 평균 계산 로직
  • 단위 테스트 작성

완료 기준

  • RateLimiterService 인터페이스 구현
  • 정확한 가중 평균 계산
  • 메모리 효율적인 구현
  • Fixed Window보다 정확한 제한
  • 테스트 커버리지 80% 이상

핵심 로직

  • 현재 윈도우와 이전 윈도우 카운터 관리
  • 시간 비율 기반 가중 평균 계산
  • 윈도우 전환 시 카운터 이동
  • 근사치 기반 요청 수 예측

알고리즘 특징

  • 장점: 메모리 효율적, Fixed Window보다 정확
  • 단점: 근사치 계산으로 완전히 정확하지 않음
  • 사용 사례: 메모리 효율성과 정확성의 균형이 필요한 경우

가중 평균 공식

estimated_count = previous_window_count * (1 - time_ratio) + current_window_count
time_ratio = (현재시간 - 현재윈도우시작시간) / 윈도우크기

파일 위치

  • src/main/java/com/example/demo/ratelimiter/service/SlidingWindowCounterService.java
  • src/test/java/com/example/demo/ratelimiter/service/SlidingWindowCounterServiceTest.java

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions