0Pricing
C# Academy · Lección

Patrón Circuit Breaker

Deje de llamar temporalmente a los servicios que fallan.

Patrón Circuit Breaker es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

El problema que los reintentos no pueden resolver

Si una dependencia está realmente caída, reintentar cada solicitud solo aumenta la carga y ralentiza su propia aplicación. El patrón de disyuntor detecta los errores persistentes y deja de llamar al servicio que falla durante un tiempo.

Inspirado en la electrónica

Al igual que un disyuntor eléctrico que se activa para proteger un circuito, este patrón «se abre» después de demasiados errores y, a continuación, comprueba automáticamente si la dependencia se ha recuperado.

Los tres estados

Un disyuntor tiene tres estados: cerrado (las llamadas fluyen con normalidad), abierto (las llamadas se bloquean de inmediato) y semiabierto (una llamada de prueba comprueba la recuperación).

Estado cerrado

En el estado cerrado, las solicitudes pasan y Polly realiza un seguimiento de la tasa de errores. Si los errores superan el umbral durante la ventana de muestreo, el disyuntor pasa al estado abierto.

Estado abierto

En el estado abierto, Polly interrumpe el circuito: lanza inmediatamente una BrokenCircuitException sin llamar a la dependencia, lo que le da tiempo para recuperarse y hace que las llamadas fallen rápidamente.

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

Estado semiabierto

Cuando transcurre la duración de interrupción, el disyuntor entra en estado semiabierto y permite una solicitud de prueba. Si tiene éxito, el circuito se cierra; si falla, vuelve a abrirse durante otro periodo de interrupción.

Configurar el disyuntor

Polly v8 utiliza CircuitBreakerStrategyOptions. Configuraciones clave: FailureRatio (por ejemplo, 0.5 = 50%), MinimumThroughput, SamplingDuration y 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 y MinimumThroughput

FailureRatio es la proporción de errores que activa el disyuntor. MinimumThroughput garantiza que el disyuntor solo se active después de un número suficiente de llamadas, para que un único error inicial no lo abra prematuramente.

Reaccionar a los cambios de estado

Use las devoluciones de llamada OnOpened, OnClosed y OnHalfOpened para registrar las transiciones o generar alertas cuando una dependencia se degrade.

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

Combinar con reintentos

Los reintentos y el disyuntor se complementan: el reintento gestiona los fallos breves, mientras que el disyuntor deja de reintentar cuando el error persiste. El orden es importante, como veremos de nuevo en la lección sobre pipelines.

Control manual

Puede conservar un CircuitBreakerManualControl para aislar (forzar la apertura) o cerrar el disyuntor manualmente, algo útil durante las ventanas de mantenimiento.

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

Comprobación rápida

Compruebe el patrón de disyuntor.

Resumen

El disyuntor protege las dependencias con problemas alternando entre los estados cerrado, abierto y semiabierto. En Polly v8, AddCircuitBreaker, junto con FailureRatio, MinimumThroughput, SamplingDuration y BreakDuration, controla su activación. El estado abierto lanza BrokenCircuitException para que las llamadas fallen rápidamente, y las devoluciones de llamada y el control manual permiten observar y modificar el estado.

Preguntas frecuentes

¿La lección «Patrón Circuit Breaker» es gratis?

Sí — el texto completo de «Patrón Circuit Breaker» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Patrón Circuit Breaker»?

Deje de llamar temporalmente a los servicios que fallan. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Patrón Circuit Breaker»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Políticas de reintento
  2. Patrón Circuit Breaker
  3. Políticas de tiempo de espera y fallback
  4. Pipelines de resiliencia
← Volver a C# Academy