Resilience

39 — Resilience Patterns

Previous: 38 Metaprogramming · Next: 40 Spring Boot Intro

▶️ java pkg18resiliencepatterns/resilience1CircuitBreaker.java · resilience4RateLimiter.java


Why resilience patterns?

Distributed systems fail. These patterns keep your service available when dependencies are slow or down.

Pattern Purpose
Circuit breaker Stop calling a failing service; fail fast
Retry with backoff Retry transient errors with increasing delay
Bulkhead Isolate thread pools so one failure doesn't sink all
Rate limiter Cap requests per time window

Circuit breaker states

code
1CLOSED → (failures exceed threshold) → OPEN → (timeout) → HALF-OPEN → (success) → CLOSED

Run: java pkg18resiliencepatterns/resilience1CircuitBreaker.java


When to use what

  • Retry: Network blips, 503 responses, idempotent operations
  • Circuit breaker: Downstream service consistently failing
  • Bulkhead: Mixed workloads (payments vs. analytics)
  • Rate limiter: Protect APIs from abuse or overload

Production libraries: Resilience4j, Sentinel, Hystrix (legacy).

Interview drill → 18 System Design

Next → 40 Spring Boot Intro