hardSystem Design

How would you design a rate limiter?

545 views
01

Understand the problem

Explain rate limiting algorithms.

rate-limiting
02

Attempt it yourself

Sketch your approach before reading the solution — that's what interviews test.

Stuck? AI Nudge Available

Get a conceptual hint to guide your logic without spoiling the final implementation.

03

Study the solution

The solution is waiting

Give it an honest attempt first — then compare your thinking with the full walkthrough.

04

Read the code

Token bucket
Run Playground
import time

class TokenBucket:
    def __init__(self, capacity, refill_rate):
        self.capacity = capacity
        self.refill_rate = refill_rate      # tokens added per second
        self.tokens = capacity
        self.last = time.monotonic()

    def allow(self, cost=1):
        now = time.monotonic()
        # refill proportional to elapsed time, capped at capacity
        self.tokens = min(self.capacity, self.tokens + (now - self.last) * self.refill_rate)
        self.last = now
        if self.tokens >= cost:
            self.tokens -= cost
            return True
        return False

# demo: capacity 5, refill 2 tokens/sec -> first 5 burst through, rest blocked
bucket = TokenBucket(capacity=5, refill_rate=2)
for i in range(8):
    print(i, "allowed" if bucket.allow() else "BLOCKED (429)")
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

No responses yet. Be the first to share what you think.