Sobes.tech
Junior — Middle

Vai jums ir pieredze ar Circuit Breaker modeļa izmantošanu projektos?

sobes.tech AI

Atbilde no AI

Circuit Breaker paraugs tiek izmantots, lai palielinātu sistēmas izturību, mijiedarbojoties ar ārējām pakalpojumiem vai komponentiem, kuri var būt nepieejami vai darboties ar kļūdām. Go projektos es šo paraugu izmantoju, lai novērstu atkārtotus neveiksmīgus tālruņa API zvanus, kas ļāva sistēmai ātrāk atgūties un neapgrūtinātu pakalpojumu.

Darbības princips: ja kļūdu skaits pārsniedz slieksni, Circuit Breaker «atveras» un turpmākie zvanīši nekavējoties atgriež kļūdu, necenšoties piekļūt pakalpojumam. Pēc noteikta laika tas mēģina «aizvērt» ķēdi un pārbaudīt, vai pakalpojums ir atjaunots.

Piemērs ar bibliotēku github.com/sony/gobreaker:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // ārējā pakalpojuma zvanīšana
        return "atbilde", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker ir atvērts vai kļūda:", err)
    } else {
        fmt.Println("Veiksme:", result)
    }
}