Junior — Middle
Czy masz doświadczenie w korzystaniu z wzorca Circuit Breaker w projektach?
sobes.tech AI
Odpowiedź od AI
Wzorzec Circuit Breaker jest używany do zwiększenia odporności systemu podczas interakcji z usługami lub komponentami zewnętrznymi, które mogą być niedostępne lub działać z błędami. W projektach w Go stosowałem ten wzorzec, aby zapobiec powtarzającym się nieudanym wywołaniom do zdalnych API, co pozwalało systemowi szybciej się odzyskać i nie obciążać nadmiernie serwisu.
Zasada działania: jeśli liczba błędów przekracza próg, Circuit Breaker się «zamyka» (otwiera), a kolejne wywołania od razu zwracają błąd bez próby kontaktu z serwisem. Po pewnym czasie następuje próba «zamknięcia» obwodu i sprawdzenia, czy serwis się odnowił.
Przykład użycia z biblioteką github.com/sony/gobreaker:
import (
"fmt"
"github.com/sony/gobreaker"
)
func main() {
cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})
result, err := cb.Execute(func() (interface{}, error) {
// wywołanie zewnętrznego serwisu
return "odpowiedź", nil
})
if err != nil {
fmt.Println("Obwód przerwany lub błąd:", err)
} else {
fmt.Println("Sukces:", result)
}
}