Skip to solution
hardSystem Design

What is the circuit breaker pattern?

331 views
01

Understand the problem

Explain circuit breakers.

circuit-breaker
02

Attempt it yourself

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

Nudge consolestandby

Stuck? Beam a request up — the console returns a conceptual nudge that guides your logic without spoiling the implementation.

03

Study the solution

Step 1: Outline use cases and constraints

Gather requirements and scope the problem. Ask questions to clarify use cases and constraints. Discuss assumptions.

Use cases

We'll scope the problem to handle only the following use cases

  • User needs to understand circuit-breaker to make architecture d

Solution ready — 2 min read

Classified // press E to declassify

04

Read the code

Circuit breaker
Run Playground
import time

class CircuitBreaker:
    def __init__(self, threshold=3, cooldown=5):
        self.threshold = threshold
        self.cooldown = cooldown
        self.failures = 0
        self.state = "CLOSED"
        self.opened_at = 0

    def call(self, fn):
        if self.state == "OPEN":
            if time.time() - self.opened_at >= self.cooldown:
                self.state = "HALF_OPEN"           # time to probe
            else:
                raise Exception("circuit OPEN - failing fast")
        try:
            result = fn()
        except Exception:
            self.failures += 1
            if self.failures >= self.threshold:
                self.state = "OPEN"
                self.opened_at = time.time()
            raise
        self.failures = 0                          # success resets
        self.state = "CLOSED"
        return result

cb = CircuitBreaker(threshold=2, cooldown=5)
def flaky():
    raise Exception("downstream down")

for i in range(4):
    try:
        cb.call(flaky)
    except Exception as e:
        print(i, cb.state, "-", e)
05

Join the discussion

Discussion (0)

Sign in to join the discussion.

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

Transmission complete // awaiting log

KEEP THE
STREAK ALIVE.

Dossier 77 of 99 decoded in the System Design track. One more won't hurt.

Back to track