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