El patrón Circuit Breaker es un patrón de diseño comúnmente utilizado en el desarrollo de software para mejorar la resiliencia y la tolerancia a fallos del sistema . Este patrón puede prevenir fallos en cascada, especialmente en sistemas distribuidos . [ 1 ] En sistemas distribuidos, el patrón Circuit Breaker se puede utilizar para monitorizar el estado del servicio y detectar fallos de forma dinámica. A diferencia de los métodos basados en tiempos de espera , que pueden provocar retrasos en las respuestas a errores o el fallo prematuro de solicitudes correctas, el patrón Circuit Breaker puede identificar de forma proactiva los servicios que no responden y prevenir intentos repetidos. Este enfoque puede mejorar la experiencia del usuario . [ 2 ]
El patrón de disyuntor se puede utilizar junto con otros patrones, como reintento, reserva y tiempo de espera, para mejorar la tolerancia a fallos en los sistemas. [ 3 ]
Desafíos
Según Marc Brooker, los disyuntores pueden interpretar erróneamente una falla parcial como una falla total del sistema y, sin querer, provocar la caída de todo el sistema. En particular, los sistemas fragmentados y las arquitecturas basadas en celdas son vulnerables a este problema. Una solución alternativa consiste en que el servidor indique al cliente qué parte específica está sobrecargada y el cliente utilice un mini disyuntor correspondiente. Sin embargo, esta solución puede ser compleja y costosa. [ 4 ] [ 5 ]
Diferentes estados del disyuntor
- Cerrado
- Abierto
- Medio abierto
Estado cerrado

Cuando todo es normal, los interruptores automáticos permanecen cerrados y todas las solicitudes llegan a los servicios. Si el número de fallos supera el umbral, el interruptor automático se dispara y pasa a estado abierto . [ 6 ]
Estado abierto

En este estado, el disyuntor devuelve un error inmediatamente sin siquiera invocar los servicios. Los disyuntores pasan al estado semiabierto tras un período de tiempo de espera. Normalmente, disponen de un sistema de monitorización donde se especifica dicho tiempo.
Estado semiabierto

En este estado, el disyuntor permite que un número limitado de solicitudes del servicio pasen e invoquen la operación. Si las solicitudes son exitosas, el disyuntor pasará al estado cerrado . Sin embargo, si las solicitudes siguen fallando, volverá al estado abierto .
Referencias
- ↑ Aprendizaje automático en microservicios: Puesta en producción de la arquitectura de microservicios para soluciones de aprendizaje automático . Packt Publishing. 2023. ISBN 9781804612149.
- ↑ Richards, Mark. Antipatrones y trampas de los microservicios . O'Reilly.
- ↑ Microservicios nativos de Kubernetes con Quarkus y MicroProfile . Manning. 2022. ISBN 9781638357155.
- ↑ Comprensión de los sistemas distribuidos . ISBN 9781838430214.
- ↑ "¿Los interruptores automáticos solucionarán mis problemas? "
- ↑ Argakoesoemah, Mohamad Daffa; Candra, Muhammad Zuhri Catur (2024). Desarrollo de un sistema de interruptores de circuito en cascada utilizando un enfoque basado en eventos en microservicios . Conferencia Internacional IEEE de 2024 sobre Ingeniería de Datos y Software (ICoDSE). doi : 10.1109/ICoDSE63307.2024.10829897 .
Enlaces externos
- Ejemplo de implementación en PHP con diagramas
- Ejemplo de patrón de reintento con Polly usando C#
- Ejemplo de implementación en C# de Anders Lybeckers usando Polly
- Paquete NuGet Polly
- Ejemplo de implementación en C# de Alexandr Nikitin
- Implementación en Python
- Patrones de estabilidad aplicados en una arquitectura RESTful
- Martin Fowler Bliki
- patrones de diseño de software