Request Rate Limit
RateLimit Header
RateLimit-Policy: <policy>[, <policy>]
<policy>
:<limit>;w=<window>[;policy="<description>"]
<limit>
: 제한량<window>
: 윈도우 기간 (초)<description>
: 정책 설명- 그 외에 정책을 설명하기위한 정보를
;<key>=<value>
형태로 추가할 수 있지만 정확한 정보를 찾지 못했습니다.
RateLimit: limit=<limit>, remaining=<remaining>, reset=<reset>
<limit>
: 제한량<remaining>
: 남은 요청량<reset>
: 다음 리셋까지 남은 시간 (초), 리셋이 되면limit
과remaining
모두 바뀔 수 있습니다.
HTTP/1.1 200 OK
Content-Type: application/json
RateLimit-Policy: 100;w=60;policy="sliding window log"
RateLimit: limit=100, remaining=99, reset=1
...
위의 예시는 아래와 같이 해석됩니다.
- 60 초의 윈도우 시간동안 최대 100 회 요청 가능한 Sliding Window 정책
- 99 회 추가 요청 가능
- 1 초 후 리셋
Leaky Bucket
Token Bucket
Fixed Window Counter
Sliding Window Log
Sliding Window Log는 요청이 오면
- 윈도우 시간 이전의 로그 삭제
- 윈도우 시간 내에 로그 수 확인
- 로그 수가 제한량보다
- 많거나 같으 경우 요청 거부
- 적은 경우 타임스탬프를 로그에 추가 후 요청 처리