Sobes.tech
Junior — Middle

Դուք ունե՞ք փորձ ծրագրերում Circuit Breaker ձևանմուշի օգտագործման վերաբերյալ։

sobes.tech AI

Պատասխան AI-ից

Circuit Breaker մոդելը օգտագործվում է համակարգի դիմակայությունը բարձրացնելու համար արտաքին ծառայությունների կամ բաղադրիչների հետ փոխազդեցության ժամանակ, որոնք կարող են հասանելի չլինել կամ սխալներով աշխատել։ Go նախագծերում ես այս մոդելը կիրառել եմ հեռավոր API-ներին կրկնվող անհաջող կանչերը կանխելու համար, ինչը թույլ էր տալիս համակարգին ավելի արագ վերականգնվել և չծանրաբեռնել ծառայությունը։

Աշխատանքի սկզբունքը՝ եթե սխալների քանակը գերազանցում է սահմանաչափը, Circuit Breaker-ը «բացվում» է և հաջորդ կանչերը անմիջապես վերադարձնում են սխալ՝ առանց ծառայությանը դիմելու։ Որոշ ժամանակ անց, փորձում է «փակել» շղթան և ստուգել, արդյոք ծառայությունը վերականգնվել է։

Օգտագործման օրինակ՝ github.com/sony/gobreaker գրադարանի հետ՝

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

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

    result, err := cb.Execute(func() (interface{}, error) {
        // արտաքին ծառայության կանչ
        return "պատասխան", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker բաց է կամ սխալ՝", err)
    } else {
        fmt.Println("Հաջողություն՝", result)
    }
}