Sobes.tech
Middle — Middle+

Можете ли објаснити принцип рада Circuit Breaker-а и зашто је он потребан у системима са високим оптерећењем?

sobes.tech АИ

Одговор од АИ

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