Sobes.tech
Junior — Middle

Layihələrdə Circuit Breaker nümunəsindən istifadə təcrübəniz varmı?

sobes.tech Süni İntellekt

AI-dan cavab

Circuit Breaker nümunəsi, xarici xidmətlərlə və ya komponentlərlə qarşılıqlı əlaqədə sistemin dayanıqlığını artırmaq üçün istifadə olunur; bu xidmətlər əlçatan olmaya və ya səhvlərlə işləyə bilər. Go layihələrində, bu nümunəni uzaq API-lərə təkrarlanan uğursuz çağırışları qarşısını almaq üçün tətbiq etdim, bu da sistemin daha sürətli bərpa olunmasına və xidməti çox yükləməməsinə imkan verdi.

İş prinsipi: əgər səhvlərin sayı müəyyən həddən çox olarsa, Circuit Breaker «açılır» və növbəti çağırışlar dərhal səhv qaytarır, xidmətə müraciət etmədən. Bir müddətdən sonra, «bağlama» cəhd edilir və xidmətin bərpa olunub-olmadığı yoxlanılır.

github.com/sony/gobreaker kitabxanası ilə istifadə nümunəsi:

import (
    "fmt"
    "github.com/sony/gobreaker"
)

func main() {
    cb := gobreaker.NewCircuitBreaker(gobreaker.Settings{})

    result, err := cb.Execute(func() (interface{}, error) {
        // xarici xidmətə çağırış
        return "cavab", nil
    })

    if err != nil {
        fmt.Println("Circuit breaker açıq və ya xəta:", err)
    } else {
        fmt.Println("Uğur:", result)
    }
}