Sobes.tech
Middle — Middle+

Ar galite paaiškinti Circuit Breaker veikimo principą ir kodėl jis reikalingas didelės apkrovos sistemose?

sobes.tech AI

Atsakymas iš AI

Circuit Breaker — tai šablonas, kuris padeda apsaugoti sistemą nuo kaskadinių gedimų dirbant su išorinėmis paslaugomis ar komponentais.

Veikimo principas:

  • Normalios būsenos Circuit Breaker leidžia užklausas į išorinę paslaugą.
  • Jei klaidų skaičius viršija nustatytą slenkstį, Circuit Breaker «atidaro» ir laikinai blokuoja tolesnes užklausas.
  • Po pertraukos jis bando atkurti ryšį (pusiau atvira būsena).
  • Jei užklausos sėkmingos, Circuit Breaker grįžta į normalią būseną.

Kam tai reikalinga:

  • Užkerta kelią perkrovai sugedusioje paslaugoje.
  • Sumažina laukimo laiką, greitai grąžindamas klaidą.
  • Pagerina sistemos stabilumą ir atsparumą.

Pavyzdys Go kalba naudojant biblioteką github.com/sony/gobreaker:

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // išorės paslaugos iškvietimas
        return "atsakymas", nil
    })

    if err != nil {
        fmt.Println("Klaida arba atidarytas Circuit Breaker:", err)
    } else {
        fmt.Println("Sėkmingas atsakymas:", result)
    }
}