0Pricing
C# Academy · Lektion

Circuit-Breaker-Muster

Unterbrechen Sie vorübergehend Aufrufe fehlerhafter Services.

Circuit-Breaker-Muster ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Problem, das Wiederholungsversuche nicht lösen können

Wenn eine Abhängigkeit tatsächlich nicht verfügbar ist, erhöht das Wiederholen jeder Anfrage nur die Last und verlangsamt Ihre eigene Anwendung. Das Muster Circuit Breaker erkennt anhaltende Fehler und unterbindet für eine gewisse Zeit Aufrufe an den fehlerhaften Dienst.

Das Vorbild aus der Elektrotechnik

Wie ein elektrischer Schutzschalter, der zum Schutz eines Stromkreises auslöst, wechselt das Muster nach zu vielen Fehlern in den Zustand „Open“ und prüft anschließend automatisch, ob sich die Abhängigkeit wieder erholt hat.

Die drei Zustände

Ein Circuit Breaker hat drei Zustände: Closed (Aufrufe werden normal weitergeleitet), Open (Aufrufe werden sofort blockiert) und Half-Open (ein Testaufruf prüft die Wiederherstellung).

Der Zustand Closed

Im Zustand Closed werden Anfragen weitergeleitet und Polly erfasst die Fehlerquote. Überschreiten die Fehler innerhalb des Abtastzeitraums den Schwellenwert, wechselt der Circuit Breaker in den Zustand Open.

Der Zustand Open

Im Zustand Open unterbricht Polly Aufrufe sofort: Es wird unmittelbar eine BrokenCircuitException ausgelöst, ohne die Abhängigkeit aufzurufen. Dadurch erhält diese Zeit zur Erholung und Aufrufer erhalten schnell eine Fehlermeldung.

try
{
    await pipeline.ExecuteAsync(token => CallServiceAsync(token));
}
catch (BrokenCircuitException)
{
    // circuit is open, fail fast
}

Der Zustand Half-Open

Nach Ablauf der Unterbrechungsdauer wechselt der Circuit Breaker in den Zustand Half-Open und lässt eine Testanfrage zu. Bei Erfolg wird der Circuit geschlossen, bei einem Fehler für eine weitere Unterbrechungsdauer wieder geöffnet.

Den Circuit Breaker konfigurieren

Polly v8 verwendet CircuitBreakerStrategyOptions. Wichtige Einstellungen sind FailureRatio (z. B. 0.5 = 50 %), MinimumThroughput, SamplingDuration und BreakDuration.

using Polly.CircuitBreaker;

var pipeline = new ResiliencePipelineBuilder()
    .AddCircuitBreaker(new CircuitBreakerStrategyOptions
    {
        FailureRatio = 0.5,
        MinimumThroughput = 10,
        SamplingDuration = TimeSpan.FromSeconds(30),
        BreakDuration = TimeSpan.FromSeconds(15)
    })
    .Build();

FailureRatio und MinimumThroughput

FailureRatio ist der Anteil der Fehler, bei dem der Circuit Breaker auslöst. MinimumThroughput stellt sicher, dass der Circuit Breaker erst nach einer ausreichenden Anzahl von Aufrufen auslöst, damit ein einzelner früher Fehler ihn nicht vorzeitig öffnet.

Auf Zustandsänderungen reagieren

Verwenden Sie die Callbacks OnOpened, OnClosed und OnHalfOpened, um Zustandsänderungen zu protokollieren oder bei einer Verschlechterung einer Abhängigkeit Warnungen auszulösen.

new CircuitBreakerStrategyOptions
{
    FailureRatio = 0.5,
    OnOpened = args =>
    {
        Console.WriteLine($"Circuit opened for {args.BreakDuration}");
        return default;
    }
};

Mit Wiederholungsversuchen kombinieren

Wiederholungsversuche und Circuit Breaker ergänzen sich: Wiederholungsversuche behandeln kurze Störungen, während der Circuit Breaker weitere Versuche stoppt, sobald der Fehler anhält. Die Reihenfolge ist wichtig und wird in der Lektion zu Pipelines erneut behandelt.

Manuelle Steuerung

Sie können ein CircuitBreakerManualControl halten, um den Circuit Breaker zu isolieren, also manuell zu öffnen oder zu schließen. Das ist beispielsweise während Wartungsfenstern nützlich.

var manualControl = new CircuitBreakerManualControl();
await manualControl.IsolateAsync(); // force open
await manualControl.CloseAsync();   // force closed

Kurzer Check

Testen Sie das Muster Circuit Breaker.

Zusammenfassung

Der Circuit Breaker schützt angeschlagene Abhängigkeiten, indem er zwischen den Zuständen Closed, Open und Half-Open wechselt. In Polly v8 steuert AddCircuitBreaker mit FailureRatio, MinimumThroughput, SamplingDuration und BreakDuration das Auslösen. Im Zustand Open wird BrokenCircuitException ausgelöst, damit Aufrufe schnell fehlschlagen. Callbacks und die manuelle Steuerung ermöglichen es Ihnen, den Zustand zu beobachten und zu überschreiben.

Häufig gestellte Fragen

Ist die Lektion „Circuit-Breaker-Muster“ kostenlos?

Ja — der vollständige Text von „Circuit-Breaker-Muster“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Circuit-Breaker-Muster“?

Unterbrechen Sie vorübergehend Aufrufe fehlerhafter Services. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Circuit-Breaker-Muster“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Retry-Richtlinien
  2. Circuit-Breaker-Muster
  3. Timeout- und Fallback-Richtlinien
  4. Resilienz-Pipelines
← Zurück zu C# Academy