0Pricing
C# Academy · Lezione

Pattern Circuit Breaker

Sospenda temporaneamente le chiamate ai servizi in errore.

Pattern Circuit Breaker è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Il problema che il retry non può risolvere

Se una dipendenza è davvero fuori servizio, riprovare ogni richiesta aggiunge soltanto carico e rallenta la Sua applicazione. Il pattern circuit breaker rileva gli errori persistenti e interrompe per un certo periodo le chiamate al servizio in errore.

Prendere spunto dall'elettronica

Come un interruttore elettrico che scatta per proteggere un circuito, questo pattern «scatta in apertura» dopo troppi errori e verifica poi automaticamente se la dipendenza si è ripresa.

I tre stati

Un circuit breaker ha tre stati: Chiuso, le chiamate procedono normalmente; Aperto, le chiamate vengono bloccate immediatamente; e Semichiuso, una chiamata di prova verifica il recupero.

Stato chiuso

Nello stato Chiuso, le richieste passano e Polly tiene traccia della frequenza degli errori. Se gli errori superano la soglia durante la finestra di campionamento, il breaker passa allo stato Aperto.

Stato aperto

Nello stato Aperto, Polly crea un corto circuito: genera immediatamente una BrokenCircuitException senza chiamare la dipendenza, concedendole il tempo di riprendersi e facendo fallire rapidamente le chiamate.

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

Stato semichiuso

Trascorsa la durata dell'interruzione, il breaker entra nello stato Semichiuso e consente una richiesta di prova. Se ha successo, il circuito si chiude; se fallisce, si riapre per un altro periodo di interruzione.

Configurare il breaker

Polly v8 usa CircuitBreakerStrategyOptions. Le impostazioni principali sono: FailureRatio, ad esempio 0.5 = 50%, MinimumThroughput, SamplingDuration e 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 e MinimumThroughput

FailureRatio è la proporzione di errori che fa scattare il breaker. MinimumThroughput assicura che il breaker scatti solo dopo un numero sufficiente di chiamate, così un singolo errore iniziale non lo apre prematuramente.

Reagire ai cambiamenti di stato

Usi i callback OnOpened, OnClosed e OnHalfOpened per registrare le transizioni o generare avvisi quando una dipendenza presenta problemi.

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

Combinare con il retry

Retry e circuit breaker si completano a vicenda: il retry gestisce i brevi problemi, mentre il breaker interrompe i retry quando l'errore persiste. L'ordine è importante, come vedremo nuovamente nella lezione sulle pipeline.

Controllo manuale

È possibile mantenere un CircuitBreakerManualControl per isolare, cioè forzare l'apertura, o chiudere manualmente il breaker, una funzione utile durante le finestre di manutenzione.

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

Controllo rapido

Verifichi il funzionamento del pattern circuit breaker.

Riepilogo

Il circuit breaker protegge le dipendenze in difficoltà passando tra gli stati Chiuso, Aperto e Semichiuso. In Polly v8, AddCircuitBreaker insieme a FailureRatio, MinimumThroughput, SamplingDuration e BreakDuration controlla l'apertura del circuito. Lo stato Aperto genera una BrokenCircuitException per far fallire rapidamente le chiamate; i callback e il controllo manuale consentono di osservare e modificare lo stato.

Domande Frequenti

La lezione «Pattern Circuit Breaker» è gratuita?

Sì — il testo completo di «Pattern Circuit Breaker» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Pattern Circuit Breaker»?

Sospenda temporaneamente le chiamate ai servizi in errore. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Pattern Circuit Breaker»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Policy di retry
  2. Pattern Circuit Breaker
  3. Policy di timeout e fallback
  4. Pipeline di resilienza
← Torna a C# Academy