What is the Circuit breaker design pattern?
Today we will see what is the Circuit breaker Design Pattern is.
Circuit breaker design pattern?
As the name suggests the Circuit breaker design pattern is used to stop the process of request and return with the response if a service is not working.
This design pattern can improve the stability and flexibility of an application.
In a distributed environment, calls to remote services and resources can fail due to transient faults, such as slow network connection, timeouts, or the resource being over-committed or temporarily unavailable. These faults typically fix themselves after a short period of time.
However there can also be situations where faults are due to unforeseen events, that might take longer to fix. These faults vary from partial loss of connectivity to complete failure of a service. In these situations, it might be pointless for an application to keep retrying an operation that is unlikely to succeed, instead, the application should accept that the operation has failed and handled this failure accordingly.
A circuit breaker pattern can prevent an application from repeatedly trying to execute an operation that’s likely to fail. Allowing it to continue without waiting for the fault to be fixed or the utilization of resources does not kill the CPU and memory.
It also enables an application to detect whether the fault has been resolved.
How does the Circuit breaker work?
A client should invoke a remote service via a proxy. When the number of consecutive failures crosses a threshold, the circuit breaker trips, and for the duration of a timeout period all attempts to invoke the remote service will fail immediately. After the timeout expires the circuit breaker allows a limited number of test requests to pass through. If those requests succeed the circuit breaker resumes normal operation. Otherwise, if there is a failure the timeout period begins again.
Consider we have Video Upload and View service when there is a failure in one of the services which triggers the Circuit open and enables the proxy service.
November 30, 2021
Senior Developer | Java & C#.NET | 10++ years of IT experience.
Planning to learn ReactJS or Angular or Flutter.!