Martin Fowler - Circuit Breaker

Martin Fowler’s canonical bliki entry defining the Circuit Breaker pattern for distributed systems fault tolerance.

Summary

Defines the Circuit Breaker pattern as wrapping a remote call in a proxy object that monitors failures and trips to an open state when a threshold is exceeded, preventing cascading failures. Explains the three states (Closed, Open, Half-Open) and the transition logic between them.

Key Arguments

  • Remote calls can fail or hang indefinitely, cascading resource exhaustion across the system.
  • The circuit breaker proxy monitors failures against a configurable threshold.
  • Three states — Closed (normal), Open (rejecting calls), Half-Open (probing) — manage the failure detection and recovery lifecycle.
  • State transitions should be logged and observable; operations staff should be able to manually trip or reset breakers.
  • Clients must implement fallback strategies (use cached data, queue the request, return a default) when the breaker is open.
  • Different types of failures (connection refused vs. timeout) may warrant different thresholds.

Concepts Covered

Quality Notes

Foundational reference; concise and authoritative. Fowler popularized this pattern from Michael Nygard’s Release It!. Still the go-to introduction to the concept.