Skip to content

Commit 236b210

Browse files
committed
네이밍 수정
1 parent 61ec0df commit 236b210

File tree

6 files changed

+21
-19
lines changed

6 files changed

+21
-19
lines changed

rate-limiter/src/main/java/io/github/gunkim/ratelimiter/Application.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package io.github.gunkim.ratelimiter;
22

33

4-
import io.github.gunkim.ratelimiter.bucket.TokenBucketRateLimiter;
4+
import io.github.gunkim.ratelimiter.bucket.TokenRateLimiterRateLimiter;
55

66
public class Application {
77
public static void main(String[] args) {
88
//4초에 2개 요청에 대한 처리율 제한 설정
99
final int bucketSize = 20;
1010
final long refillRate = 60_000L;
11-
var bucket = new TokenBucketRateLimiter(bucketSize, refillRate);
11+
var bucket = new TokenRateLimiterRateLimiter(bucketSize, refillRate);
1212

1313
while (true) {
1414
processRequest(bucket);
1515
sleep(1_000);
1616
}
1717
}
1818

19-
private static void processRequest(TokenBucketRateLimiter bucket) {
19+
private static void processRequest(TokenRateLimiterRateLimiter bucket) {
2020
bucket.request(() -> System.out.println("Request"));
2121
}
2222

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package io.github.gunkim.ratelimiter;
2+
3+
public interface RateLimiter {
4+
void request(Runnable request);
5+
}

rate-limiter/src/main/java/io/github/gunkim/ratelimiter/bucket/Bucket.java

Lines changed: 0 additions & 5 deletions
This file was deleted.

rate-limiter/src/main/java/io/github/gunkim/ratelimiter/bucket/LeakyBucketRateLimiter.java renamed to rate-limiter/src/main/java/io/github/gunkim/ratelimiter/bucket/LeakyRateLimiterRateLimiter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.gunkim.ratelimiter.bucket;
22

3+
import io.github.gunkim.ratelimiter.RateLimiter;
34
import org.slf4j.Logger;
45
import org.slf4j.LoggerFactory;
56

@@ -17,16 +18,16 @@
1718
* <p>
1819
* 고정된 처리율로 안정적인 트래픽 처리엔 좋지만, 트래픽이 몰리게 되면 요청이 버려질 수 있음.
1920
*/
20-
public class LeakyBucketRateLimiter implements AutoCloseable, Bucket {
21-
private static final Logger logger = LoggerFactory.getLogger(LeakyBucketRateLimiter.class);
21+
public class LeakyRateLimiterRateLimiter implements AutoCloseable, RateLimiter {
22+
private static final Logger logger = LoggerFactory.getLogger(LeakyRateLimiterRateLimiter.class);
2223

2324
private final Queue<Runnable> queue;
2425
private final int bucketSize;
2526
private final int batchSize;
2627

2728
private final ScheduledExecutorService executorService;
2829

29-
public LeakyBucketRateLimiter(int bucketSize, long scheduleInterval, int batchSize) {
30+
public LeakyRateLimiterRateLimiter(int bucketSize, long scheduleInterval, int batchSize) {
3031
this.bucketSize = bucketSize;
3132
this.batchSize = batchSize;
3233

rate-limiter/src/main/java/io/github/gunkim/ratelimiter/bucket/TokenBucketRateLimiter.java renamed to rate-limiter/src/main/java/io/github/gunkim/ratelimiter/bucket/TokenRateLimiterRateLimiter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.gunkim.ratelimiter.bucket;
22

3+
import io.github.gunkim.ratelimiter.RateLimiter;
34
import org.slf4j.Logger;
45
import org.slf4j.LoggerFactory;
56

@@ -17,13 +18,13 @@
1718
* 구현이 쉬우며 많은 기업이 이용하고 있다. 하지만 안정적인 처리를 보장하진 못한다.
1819
* 예를 들어, 초반에 트래픽이 몰려 모든 토큰이 소비된다면 이후 요청은 토큰이 리필될 때까지 처리되지 못한다.
1920
*/
20-
public class TokenBucketRateLimiter implements AutoCloseable, Bucket {
21-
private static final Logger logger = LoggerFactory.getLogger(TokenBucketRateLimiter.class);
21+
public class TokenRateLimiterRateLimiter implements AutoCloseable, RateLimiter {
22+
private static final Logger logger = LoggerFactory.getLogger(TokenRateLimiterRateLimiter.class);
2223

2324
private final ScheduledExecutorService executorService;
2425
private final AtomicInteger tokens;
2526

26-
public TokenBucketRateLimiter(int bucketSize, long refillRate) {
27+
public TokenRateLimiterRateLimiter(int bucketSize, long refillRate) {
2728
this.executorService = Executors.newSingleThreadScheduledExecutor();
2829
this.tokens = new AtomicInteger(bucketSize);
2930

rate-limiter/src/test/java/io/github/gunkim/ratelimiter/bucket/TokenBucketRateLimiterTest.java renamed to rate-limiter/src/test/java/io/github/gunkim/ratelimiter/bucket/TokenRateLimiterRateLimiterTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import static org.mockito.Mockito.times;
1414

1515
@DisplayName("TokenBucket은")
16-
class TokenBucketRateLimiterTest {
16+
class TokenRateLimiterRateLimiterTest {
1717
private Runnable request;
1818

1919
@BeforeEach
@@ -23,15 +23,15 @@ void setUp() {
2323

2424
@Test
2525
void 토큰이_없는_경우_요청이_무시된다() {
26-
try (var tokenBucket = new TokenBucketRateLimiter(0, 20_000)) {
26+
try (var tokenBucket = new TokenRateLimiterRateLimiter(0, 20_000)) {
2727
tokenBucket.request(request);
2828
Mockito.verify(request, never()).run();
2929
}
3030
}
3131

3232
@Test
3333
void 토큰이_최대치일_때_모든_요청이_처리된다() {
34-
try (var tokenBucket = new TokenBucketRateLimiter(10, 20_000)) {
34+
try (var tokenBucket = new TokenRateLimiterRateLimiter(10, 20_000)) {
3535
for (int i = 0; i < 10; i++) {
3636
tokenBucket.request(request);
3737
}
@@ -41,7 +41,7 @@ void setUp() {
4141

4242
@Test
4343
void 토큰이_모두_사용된_후_나머지_요청이_무시된다() {
44-
try (var tokenBucket = new TokenBucketRateLimiter(3, 20_000)) {
44+
try (var tokenBucket = new TokenRateLimiterRateLimiter(3, 20_000)) {
4545
for (int i = 0; i < 6; i++) {
4646
tokenBucket.request(request);
4747
}
@@ -51,7 +51,7 @@ void setUp() {
5151

5252
@Test
5353
void 다중_스레드_환경에서_정상_작동한다() {
54-
try (var tokenBucket = new TokenBucketRateLimiter(100, 5_000)) {
54+
try (var tokenBucket = new TokenRateLimiterRateLimiter(100, 5_000)) {
5555
ExecutorService taskExecutor = Executors.newFixedThreadPool(10);
5656
for (int i = 0; i < 150; i++) {
5757
taskExecutor.execute(() -> tokenBucket.request(request));

0 commit comments

Comments
 (0)