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