Sobes.tech
Junior — Middle

Kas teil on kogemusi Circuit Breaker mustri kasutamisel projektides?

sobes.tech AI

Vastus AI-lt

Circuit Breaker musterit kasutatakse süsteemi vastupidavuse suurendamiseks, kui suheldakse väliste teenuste või komponentidega, mis võivad olla kättesaamatud või töötada vigadega. Go projektides olen seda mustrit rakendanud, et vältida korduvaid ebaõnnestunud kaug-API-kutseid, mis võimaldas süsteemil kiiremini taastuda ja mitte üle koormata teenust.

Tööpõhimõte: kui vigade arv ületab määra, avatakse Circuit Breaker ja järgmised kutsevad kohe vea, ilma teenust proovimata. Pärast teatud aega üritatakse «sulgeda» ahel ja kontrollida, kas teenus on taastunud.

Näide kasutamisest github.com/sony/gobreaker raamatukoguga:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // välise teenuse kutse
        return "vastus", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker on avatud või viga:", err)
    } else {
        fmt.Println("Edu:", result)
    }
}