system-design pattern

Rate Limiter Design

Protect APIs from abuse with different rate limiting algorithms. Critical for system stability.

Time

O(1) per request check

Space

O(users × rules) for distributed

🧠Mental Model

“A nightclub bouncer with a clicker - only lets X people in per hour, tracks the count, resets the counter.”

Verbal cue: Count requests, compare to limit, allow or deny.

🎯Recognition Triggers

When you see these patterns in a problem, consider this approach:

rate limitthrottleAPI abuseDDoS protectionquota

💡Interview Tips

  • 1Token bucket allows bursts, leaky bucket smooths traffic
  • 2Always use Redis Lua scripts for atomic operations
  • 3Discuss response headers: X-RateLimit-Remaining, Retry-After

⚠️Common Mistakes

  • ✕Not handling distributed environments (multiple servers)
  • ✕Forgetting about race conditions in counter updates
  • ✕Not considering different limits per user tier