Middle — Middle+
Circuit Breaker-in işləmə prinsipini və yüksək yüklü sistemlərdə niyə lazım olduğunu izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Circuit Breaker — xarici xidmətlər və ya komponentlərlə işləyərkən sistemin kaskad uğursuzluqlarından qorunmasına kömək edən nümunədir.
İş prinsipi:
- Normal vəziyyətdə, Circuit Breaker xarici xidmətə sorğuları keçirir.
- Əgər səhvlərin sayı müəyyən edilmiş həddən çox olarsa, Circuit Breaker «açılır» və müəyyən müddət üçün növbəti sorğuları bloklayır.
- Bir fasilədən sonra əlaqəni bərpa etməyə çalışır (yarım açıq vəziyyət).
- Əgər sorğular uğurlu olarsa, Circuit Breaker normal vəziyyətə qayıdır.
Niyə lazımdır:
- Çökmüş xidmətə artıq yükü qarşısını alır.
- Cavab vaxtını azaldır, tez bir zamanda səhv geri qaytarır.
- Sistemin dayanıqlığını və xətalara davamlılığını artırır.
Go dilində github.com/sony/gobreaker kitabxanası ilə nümunə:
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("Xəta və ya Circuit Breaker açıq:", err)
} else {
fmt.Println("Uğurlu cavab:", result)
}
}