Junior — Middle
Máte skúsenosti s používaním vzoru Circuit Breaker v projektoch?
sobes.tech AI
Odpoveď od AI
Vzorec Circuit Breaker se uporablja za povečanje odpornosti sistema med interakcijo z zunanjimi storitvami ali komponentami, ki so lahko nedosegljive ali delujejo z napakami. V projektih v Go sem ta vzorec uporabil za preprečevanje ponovnih neuspešnih klicev oddaljenih API-jev, kar je omogočilo hitrejše okrevanje sistema in preprečilo preobremenitev storitve.
Načelo delovanja: če število napak preseže prag, se Circuit Breaker «odpre» in nadaljnji klici takoj vrnejo napako brez poskusa dostopa do storitve. Po določenem času poskusi «zapreti» krog in preveriti, ali je storitev obnovljena.
Primer uporabe z knjižnico github.com/sony/gobreaker:
import (
"fmt"
"github.com/sony/gobreaker"
)
func main() {
cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})
result, err := cb.Execute(func() (interface{}, error) {
// klic zunanje storitve
return "odgovor", nil
})
if err != nil {
fmt.Println("Odprt ali napaka Circuit Breaker:", err)
} else {
fmt.Println("Uspeh:", result)
}
}