보안

태태개발일지 - RateLimiter

태태코 2025. 2. 2. 16:53
반응형

 

 Guava RateLimiter

 

Google의 Guava RateLimiter는 초당 몇 개의 요청을 처리할지 결정하는 라이브러리이다.

ex) 1초에 최대 5개의 요청만 허용 같은 제한을 쉽게 설정할 수 있다.

 

 

기본기능

타입 메서드 설명
static RateLimiter create(double permitsPerSecond) 입력받은 "초당 허용량"을 가진 RateLimiter생성
double acquire() 1회 허가 요청 후 요청이 승인될때 까지 대기

 

 

RateLimiter rateLimiter = RateLimiter.create(2);

for (int i = 0; i < Integer.MAX_VALUE; i++) {
  rateLimiter.acquire();
  System.out.println(i);
}

 

초당 횟수를 정해놓고 
rateLimiter.acquire();로 시간을 조절해서 요청을 처리하는 것이다. => 이 개념이 헷갈려서 계속 찾아봤음..

 

public class RateLimiterTest {
    public static void main(String[] args) {
        // 1분에 50회 요청 가능 (즉, 초당 약 0.8333회)
        RateLimiter rateLimiter = RateLimiter.create(50.0 / 60.0);

        for (int i = 1; i <= 10; i++) {
            double waitTime = rateLimiter.acquire();  // 요청 전에 대기 시간 발생
            System.out.println("Request " + i + " sent after waiting " + waitTime + " seconds");
        }
    }
}

 

분당으로 처리하기 위해서는 50회 / 60초 를 하면 초당 몇회를 해야할 지 나온다.

 

 

 

반응형