Junior — Middle
Have you had experience using the Circuit Breaker pattern in projects?
sobes.tech AI
Answer from AI
The Circuit Breaker pattern is used to enhance system resilience when interacting with external services or components that may be unavailable or operate with errors. In Go projects, I applied this pattern to prevent repeated failed calls to remote APIs, allowing the system to recover faster and not overload the service.
Working principle: if the error count exceeds a threshold, the Circuit Breaker 'opens' and further calls immediately return an error without attempting to contact the service. After some time, it tries to 'close' the circuit to check if the service has recovered.
Example of usage with the library github.com/sony/gobreaker:
import (
"fmt"
"github.com/sony/gobreaker"
)
func main() {
cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})
result, err := cb.Execute(func() (interface{}, error) {
// call to external service
return "response", nil
})
if err != nil {
fmt.Println("Circuit breaker open or error:", err)
} else {
fmt.Println("Success:", result)
}
}