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