Ai experiență în utilizarea pattern-ului Circuit Breaker în proiecte?
sobes.tech AI
Răspuns de la AI
Modelul Circuit Breaker este utilizat pentru a crește rezistența sistemului în timpul interacțiunii cu servicii sau componente externe care pot fi indisponibile sau pot funcționa cu erori. În proiectele Go, am aplicat acest model pentru a preveni apelurile repetate eșuate către API-uri remote, ceea ce a permis sistemului să se recupereze mai rapid și să nu suprasolicite serviciul.
Principiul de funcționare: dacă numărul de erori depășește un prag, Circuit Breaker se «deschide» și apelurile ulterioare returnează imediat o eroare fără a încerca să acceseze serviciul. După un timp, se încearcă «închiderea» circuitului și verificarea dacă serviciul s-a recuperat.
Exemplu de utilizare cu 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) {
// apel către serviciul extern
return "răspuns", nil
})
if err != nil {
fmt.Println("Circuit breaker deschis sau eroare:", err)
} else {
fmt.Println("Succes:", result)
}
}