Junior — Middle
Tem experiência na utilização do padrão Circuit Breaker em projetos?
sobes.tech IA
Resposta da IA
O padrão Circuit Breaker é utilizado para aumentar a resistência do sistema ao interagir com serviços ou componentes externos que podem estar indisponíveis ou a funcionar com erros. Em projetos em Go, apliquei este padrão para evitar chamadas falhadas repetidas a APIs remotas, permitindo que o sistema se recuperasse mais rapidamente e não sobrecarregasse o serviço.
Princípio de funcionamento: se o número de erros exceder um limite, o Circuit Breaker «desliga-se» e as chamadas subsequentes retornam imediatamente um erro sem tentar aceder ao serviço. Após algum tempo, tenta-se «reconectar» a cadeia e verificar se o serviço se recuperou.
Exemplo de uso com a biblioteca github.com/sony/gobreaker:
import (
"fmt"
"github.com/sony/gobreaker"
)
func main() {
cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})
result, err := cb.Execute(func() (interface{}, error) {
// chamada ao serviço externo
return "resposta", nil
})
if err != nil {
fmt.Println("Circuit breaker aberto ou erro:", err)
} else {
fmt.Println("Sucesso:", result)
}
}