Backend nền tảng
C1 · Rate Limiting – Giới hạn tần suất request
Kiểm soát số request một client được gửi trong một khoảng thời gian.
C1 · Middle · cốt lõi
Giống cửa soát vé: mỗi người chỉ được qua tối đa N lần trong một khoảng thời gian. Ai vượt quá thì bị chặn lại (HTTP 429).
Cốt lõi
- Kiểm soát số request một client được gửi trong một khoảng thời gian.
- Token Bucket: xô chứa token, mỗi request lấy 1 token, token được nạp lại đều đặn → cho phép burst ngắn.
- Fixed Window: đếm theo cửa sổ cố định (100 req/phút) → đơn giản nhưng dễ bị dồn request ở ranh giới cửa sổ.
- Biến thể khác nên biết tên: Leaky Bucket, Sliding Window Log/Counter.
Đánh đổi
Đặt ở API Gateway / Auth Service. Hệ phân tán cần bộ đếm chung (Redis + INCR/Lua) để các instance đồng bộ.
Trong thực tế
API Gateway giới hạn 1000 req/phút mỗi user.
Bug thường gặp
Đếm rate limit trong bộ nhớ của từng instance → chạy 5 instance thì giới hạn thực tế gấp 5 lần.
Tự hỏi lại
Rate limit theo IP hay theo user? Xử lý thế nào khi Redis đếm bị chết (fail-open vs fail-closed)?