Junior — Middle
Da li imate iskustva sa korišćenjem obrasca Circuit Breaker u projektima?
sobes.tech АИ
Одговор од АИ
Модел 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)
}
}