Docs học tập
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)?

On this page