• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    해결됨

Sliding Window Rate Limiter에 대한 질문

23.10.22 16:12 작성 조회수 189

0

예시 그림을 보면 새로운 요청을 add할때 ZADD 1.1.1.1 1693494130 1693494130 형식으로 add를 하던데 이러면 혹시 동일한 timestamp에 여러번 요청이 올 경우는 어떻게 구분하나요? 가령 1693494130에 3번의 요청이 동시에 발생한다면 스코어는 1693494130로 하고 item을 1693494130_0이런식으로 index를 추가해야할 것 같아서요

답변 1

답변을 작성해보세요.

0

안녕하세요! 해당 부분은 sliding window의 특성을 쉽게 설명하기 위해서 지적해주신 부분처럼 초당 중복요청을 무시하게 설계되어 있습니다.

가장 쉽게 중복 문제를 개선하는 방법은 unix timestamp를 microsecond 단위로 생성하는 방법이 있을 것 같습니다. 초당 중복 요청에 비해 microsecond 단위의 중복 요청은 상대적으로 적을 것이기 때문입니다.

그런데 microsecond에서도 중복이 발생할 수 있기 때문에 추가적으로 member 이름 뒤에 임의의 값을 추가하여 microsecond 단위의 중복까지도 제거할 수 있을 것 같습니다.

제안해주신 방법처럼 sequential한 index를 추가하는 것도 좋은 방법이지만, index를 카운팅하기 위한 별도의 작업이 필요하기 때문에 간단하게 random value를 추가하여 좀 더 간단하게 개선 가능할 것 같습니다.

좋은 질문 주셔서 감사합니다!