Today we will see what is the Circuit breaker Design Pattern is.
Previously we saw about What is Microservice? and the principles followed while developing MSA and the available design patterns.
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.

Circuit breaker design pattern
Example:
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.