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