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