Sobes.tech
Junior — Middle

Máte zkušenosti s použitím vzoru Circuit Breaker v projektech?

sobes.tech AI

Odpověď od AI

Vzorek Circuit Breaker se používá ke zvýšení odolnosti systému při interakci s externími službami nebo komponentami, které mohou být nedostupné nebo pracovat s chybami. V projektech v Go jsem tento vzor použil k prevenci opakovaných neúspěšných volání vzdálených API, což umožnilo systému rychleji se zotavit a nezatěžovat službu.

Princip fungování: pokud počet chyb překročí práh, Circuit Breaker se «otevře» a další volání okamžitě vrátí chybu bez pokusu o kontakt se službou. Po určité době se pokusí «zavřít» obvod a zkontrolovat, zda se služba zotavila.

Příklad použití s knihovnou github.com/sony/gobreaker:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // volání externí služby
        return "odpověď", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker otevřen nebo chyba:", err)
    } else {
        fmt.Println("Úspěch:", result)
    }
}