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)
}
}