recall

← recall

bulkhead pattern

Give each downstream its own pool of resources so a problem with one can't drain the shared pool that everything else depends on. Compartments in a ship's hull — a leak in one doesn't sink the boat.

Give each downstream its own pool of resources so a problem with one can't drain the shared pool that everything else depends on. Compartments in a ship's hull — a leak in one doesn't sink the boat.

symptoms

  • one slow dependency takes the whole service down
  • thread pool exhaustion blocks unrelated work
  • shared connection pool hot-spots

causes

  • single shared resource pool across many downstreams
  • no per-dependency limits

fixes

  • separate thread pools per downstream
  • per-dependency connection pools
  • semaphore or token-bucket limits per upstream
  • kubernetes-level isolation for the strongest cases

you might say

  • partition the thread pool
  • isolate that dependency
  • give it its own pool

related

topics: resilience

references: