Sobes.tech
Junior — Middle

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)
    }
}