Comparison
BulkheadvsConcurrency limit
Bulkhead
you give each downstream its own pool of connections so one slow dependency cannot consume every thread you have.
Partitioning resources so that exhaustion in one compartment cannot sink the whole service. In practice: separate connection pools, thread pools or instances per dependency or per tenant. It converts a total outage into a partial one, which is the entire goal of resilience engineering.
Full entry →Concurrency limit
you cap the number of tasks that may touch the production replica at four, so a backfill cannot take the source down.
A cap on how many tasks may run at once, globally or against a named resource. It is the orchestrator's version of a bulkhead, and it is the mechanism that stops one greedy pipeline from starving everything else or overwhelming a shared dependency. Setting them per resource rather than globally is what makes them useful, because the thing you are protecting is the source database, not the scheduler.
Full entry →