Skip to content

Commit 2b2aa43

Browse files
committed
docs: Read.md 문서 작성
1 parent 0304376 commit 2b2aa43

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

Diff for: README.md

+77
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,80 @@
33
---
44

55
- 대규모 트래픽 4장 **“처리율 제한 장치 설계”** 에 소개된 **이동 윈도 카운터 알고리즘**을 구현한 API입니다.
6+
7+
8+
<br/>
9+
10+
## 🛠️ 사용 SW
11+
12+
---
13+
14+
![slidingwindowcounter.png](slidingwindowcounter.png)
15+
16+
<br/>
17+
18+
## 🏢 아키텍처 구조
19+
20+
---
21+
22+
23+
```
24+
├── common 패키지
25+
│ └── config 패키지
26+
│ └── RedisConfig.class
27+
28+
│ └── dto 패키지
29+
│ └── ExceptionResponse.class
30+
│ └── exception 패키지
31+
│ └── BusinessException.class
32+
│ └── CommonException.class
33+
│ └── CommonExceptionCode.enum
34+
│ └── ExceptionCode.interface
35+
│ └── GlobalExceptionHandler.class
36+
37+
├── Controller 패키지
38+
│ └── SlidingWindowCounterController.class
39+
40+
├── dto 패키지
41+
│ └── response 패키지
42+
│ └── SlidingWindowCounterProfileResponse.class
43+
│ └── SlidingWindowCounterResponse.class
44+
45+
├── exception 패키지
46+
│ └── RateException.class
47+
│ └── RateLimitExceededException.enum
48+
49+
├── service 패키지
50+
│ └── SlidingWindowCounterService.class
51+
52+
└── SlidingWindowCounterApplication.class
53+
54+
```
55+
56+
<br/>
57+
58+
## ✏️ API 설명
59+
60+
---
61+
62+
### 1️⃣ 이동 윈도 카운터 생성 API
63+
- 이동 윈도 카운터 생성 API는 이동 윈도 카운터 알고리즘을 구현한 API입니다.
64+
- 이동 윈도 카운터 생성 API는 요청을 받으면 Redis에 이동 윈도 카운터를 생성하고 요청 횟수를 증가시킵니다.
65+
- 각 카운터는 고유한 **윈도 기간(60초)** 동안 유효하며, 이 기간 내의 요청 수를 카운트합니다.
66+
- 요청 수가 **고정된 최대 요청 허용 수(1000회)** 를 초과하면, 요청은 제한됩니다.
67+
- 요청이 성공적으로 처리되면, 현재 요청 카운터의 키와 요청 수를 반환합니다.
68+
69+
``` Http
70+
POST /sliding-window-counter
71+
```
72+
73+
<br/>
74+
75+
### 2️⃣ 이동 윈도 카운터 조회 API
76+
- 생성된 이동 윈도 카운터의 정보를 조회하는 API입니다.
77+
- 유효한 모든 이동 윈도 카운터의 키와 해당 키의 요청 수를 조회할 수 있습니다.
78+
- Redis에서 이동 윈도 카운터를 스캔하여, 현재의 요청 수와 함께 각 카운터 정보를 반환합니다.
79+
80+
``` Http
81+
GET /sliding-window-counter
82+
```

Diff for: slidingwindowcounter.png

30.8 KB
Loading

0 commit comments

Comments
 (0)