Skip to content

Commit 59d756c

Browse files
committed
패키지 이동
1 parent bfeb067 commit 59d756c

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed
Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.gunkim.ratelimiter.tokenbucket;
1+
package io.github.gunkim.ratelimiter.bucket;
22

33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
@@ -8,7 +8,16 @@
88
import java.util.concurrent.TimeUnit;
99
import java.util.concurrent.atomic.AtomicInteger;
1010

11-
public class TokenBucket implements AutoCloseable {
11+
/**
12+
* ## 처리 제한 알고리즘, 토큰 버킷
13+
* - 요청이 들어오면 토큰이 존재한다면 처리된다.
14+
* - 토큰이 부족하다면 거부된다.
15+
* - 일정 시간마다 토큰을 버킷 크기만큼 리필한다.
16+
* <p>
17+
* 구현이 쉬우며 많은 기업이 이용하고 있다. 하지만 안정적인 처리를 보장하진 못한다.
18+
* 예를 들어, 초반에 트래픽이 몰려 모든 토큰이 소비된다면 이후 요청은 토큰이 리필될 때까지 처리되지 못한다.
19+
*/
20+
public class TokenBucket implements AutoCloseable, Bucket {
1221
private static final Logger logger = LoggerFactory.getLogger(TokenBucket.class);
1322

1423
private final ScheduledExecutorService executorService;
@@ -23,6 +32,7 @@ public TokenBucket(int bucketSize, long refillRate) {
2332
logger.info("Token bucket created with size: {} and refill rate: {}", bucketSize, refillRate);
2433
}
2534

35+
@Override
2636
public void request(Runnable request) {
2737
int currentTokens;
2838
do {
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.github.gunkim.ratelimiter.tokenbucket;
1+
package io.github.gunkim.ratelimiter.bucket;
22

33
import org.junit.jupiter.api.BeforeEach;
44
import org.junit.jupiter.api.DisplayName;

0 commit comments

Comments
 (0)