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