Middle — Middle+
Можете ли да обясните принципа на работа на Circuit Breaker и защо е необходим в системи с голям товар?
sobes.tech AI
Отговор от AI
Circuit Breaker — това е шаблон, който помага да се защити системата от каскадни сривове при работа с външни услуги или компоненти.
Принцип на работа:
- В нормално състояние, Circuit Breaker позволява заявките към външната услуга.
- Ако броят на грешките надвиши зададения праг, Circuit Breaker «се отваря» и блокира бъдещи заявки за определено време.
- След пауза, се опитва да възстанови връзката (полуотворено състояние).
- Ако заявките са успешни, Circuit Breaker се връща в нормално състояние.
Защо е нужен:
- Предотвратява претоварване на падналата услуга.
- Намалява времето за изчакване на отговора, бързо връща грешка.
- Повишава стабилността и устойчивостта на системата.
Пример на Go с използване на библиотеката 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)
}
}