Sobes.tech
Junior — Middle

Hai esperienza nell'uso del pattern Circuit Breaker nei progetti?

sobes.tech AI

Risposta dell'AI

Il pattern Circuit Breaker viene utilizzato per aumentare la resilienza del sistema durante l'interazione con servizi o componenti esterni che potrebbero essere non disponibili o funzionare con errori. Nei progetti in Go, ho applicato questo pattern per prevenire chiamate fallite ripetute a API remote, consentendo al sistema di recuperare più rapidamente e di non sovraccaricare il servizio.

Principio di funzionamento: se il numero di errori supera una soglia, il Circuit Breaker si «apre» e le chiamate successive restituiscono immediatamente un errore senza tentare di accedere al servizio. Dopo un certo tempo, si tenta di «richiudere» la catena e verificare se il servizio si è ripristinato.

Esempio di utilizzo con la libreria github.com/sony/gobreaker:

import (
    "fmt"
    "github.com/sony/gobreaker"
)

func main() {
    cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})

    result, err := cb.Execute(func() (interface{}, error) {
        // chiamata al servizio esterno
        return "risposta", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker aperto o errore:", err)
    } else {
        fmt.Println("Successo:", result)
    }
}