Das Bulkhead-Muster (englisch für Schott) isoliert Ressourcen-Pools, damit ein überlasteter oder ausgefallener Bereich eines Systems andere Bereiche nicht mitreißt. Der Name kommt von den wasserdichten Schotten eines Schiffs: Bricht an einer Stelle Wasser ein, bleibt der Rest des Schiffs schwimmfähig, weil die Abteilungen voneinander getrennt sind.

Das Prinzip

Statt einen einzigen gemeinsamen Pool aus Threads, Verbindungen oder Arbeitsspeicher zu verwenden, teilt das Bulkhead-Muster die Ressourcen in getrennte Abteilungen auf. Jeder Dienst oder jede Dienstgruppe bekommt einen eigenen, begrenzten Pool. Ein Load Balancer-Ziel, das plötzlich sehr langsam wird, kann so nicht mehr alle Threads des gemeinsamen Pools belegen — die übrigen Dienste arbeiten mit ihren eigenen Pools ungestört weiter.

Umsetzung

Bekannte Implementierungen sind Resilience4j (Thread-Pool- und Semaphor-Isolation) und Polly (.NET). Die Isolation lässt sich auf mehreren Ebenen anwenden: im Prozess durch getrennte Thread-Pools, auf Systemebene durch eigene Container oder virtuelle Maschinen und auf Betriebsebene, indem administrative Funktionen eigene Server erhalten. Der Preis der Isolation ist eine geringere Auslastung: Reservierte, ungenutzte Kapazität kann nicht von anderen Bereichen mitbenutzt werden.

Abgrenzung zu anderen Stabilitätsmustern

Während der Circuit Breaker fehlerhafte Aufrufe nach einer Fehlerschwelle unterbricht, verhindert das Bulkhead-Muster bereits, dass ein Bereich die gemeinsamen Ressourcen erschöpft. Ergänzend sorgt Retry-Logik mit Backoff dafür, dass ein Ausfall nicht durch hektische Wiederholungsversuche verstärkt wird.

Verwandte Grundlagen: Circuit Breaker, Retry-Logik, Backpressure, Fail Fast, Health Check, Resilienz, Verteilte Systeme.