Sobes.tech
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)
    }
}