GH GambleHub

Circuit Breaker və deqradasiya

Circuit Breaker (CB) uğursuzluğu lokallaşdırmaq və axın xidmətlərini və istifadəçini qorumaq üçün pozulmuş asılılığa qarşı çağırışları kəsən qoruyucu bir nümunədir. Deqradasiya (graceful degradation) - resursların çatışmazlığı və ya uğursuzluqlar zamanı funksionallığın qəsdən sadələşdirilməsi (məsələn, cached/natamam məlumatların qaytarılması, «bahalı» fiqurların bağlanması).

Əsas məqsəd: SLO və istifadəçi təcrübəsini kaskad düşmə əvəzinə nəzarət edilən uğursuzluqlarla saxlamaq.

1) Nə zaman tətbiq olunur

Asılılıq qeyri-sabitdir: böyümə p95/p99, vaxtlar, səhv cavablar.
Sərt limitlər/penalti ilə xarici API.
Retrajların fırtınanı gücləndirdiyi «ağır» arxalar (axtarış, tövsiyələr, hesabatlar).
Hovuzların tükənməsi riski olan yüksək yüklü sahələr (birləşmələr, tredlər).

2) CB halları və keçidlər

Klassik üçlük:

1. Closed - trafik gedir, səhv/gecikmə metrikası sayılır.

2. Open - zənglər dərhal rədd edilir (fail-fast) və/və ya fallback-ə tərcümə olunur.

3. Half-Open - məhdud sayda «sınaq» sorğuları açarın bağlanıb bağlanmayacağını müəyyən edir.

Açılış tetikləyiciləri

Pəncərə arxasında xəta/vaxt həddi (məsələn, N son 50% -dən ≥).
Gecikmə həddi (məsələn, p95> hədəf dəyəri).
Kombinə edilmiş siyasətlər (səhvlər ∧ vaxtın aşılması).

Saxlama vaxtı (cool-down)

Sabit (məsələn, 10-60 san) və ya adaptiv (təkrar işlənmə zamanı eksponensial artım).

3) Taymaut, retraj və jitter

Taymautlar həmişə SLO axınından qısadır və zəncirlə razılaşdırılır (deadline propagation).
Retrai yalnız idempotent əməliyyatlar üçün; 1-2 cəhdlər əksər hallarda kifayətdir.
Backoff + jitter (full jitter) sinxron təkrarlama dalğalarının qarşısını alır.
Hedging (ehtiyat sorğular) - qənaətli və yalnız çox tənqidi oxunmalar üçün.

4) Bulkhead-izolyasiya və «qoruyucular»

Qoşulma/worker/növbə hovuzlarını domenlərə və trafik növlərinə (VIP, fon tapşırıqları, ictimai API) görə bölün.
«bahalı» əməliyyatlar üçün concurrency Caps.
Admission control: növbə aşırıldıqda yerinə yetirilməzdən əvvəl yüngül imtina.

5) Fallback və deqradasiya ssenariləri

Variantlar

Cache/Stail cavabları: 'stale-while-revalidate', L2/L3 cache-dən məlumatların qaytarılması.
Read-only: blok yazmaq/əmrlər, təhlükəsiz oxu imkan.
Surroqat cavablar: natamam məlumatlar (məsələn, tövsiyələr/avatarlar olmadan).
Funksional bağlantı: kritik olmayan widget/fich 'i müvəqqəti gizlətmək.
Feature flags: azad olmadan sürətli davranış dəyişikliyi.

Qaydalar

Fallback məlumatlara görə determinant, sürətli və təhlükəsiz olmalıdır.
Log/Trace/metriklərdə deqradasiyaya uğramış yolu açıq şəkildə qeyd edin.

6) Prioritetləşdirmə və trafik

VIP/ödənişli planlar - kəsir zamanı daha böyük prioritet/kvota.
Rate limits və throttling deqradasiyaya məruz qalan asılılıqların yükünü azaldır.
Shed load: stabilizasiyaya qədər keyfiyyətin yumşaq azalması (məsələn, daha az nəticə, kəsilmiş görüntülər).

7) Müşahidə və siqnalizasiya

CB metrikası

State (closed/open/half-open) və müddəti vəziyyətdədir.
Səbəblərə görə uğursuzluqların nisbəti: CB-open, timeout, 5xx, retry-exhausted.
p95/p99 gecikmə açarı «əvvəl» və «sonra».
fallback vasitəsilə sorğuların sayı/payı.

Treysinq

Span şərhləri: 'circuit = opened', 'fallback = cache', 'admission = denied'.
Limitlərlə korrelyasiya (429/RateLimit-), növbələr və birləşmə güllələri.

Qeydlər/Audit

Açılış/bağlanış səbəbi, eşiklər, asılılıq identifikatorları.

8) Müqavilələr və protokol

HTTP

Fail-fast: '503 Service Unavailable' ilə 'Retry-After' (və ya limitlər ilə '429').
Partial content/stail: '200 '/' 206' deqradasiya meta məlumatları ilə (məsələn, 'X-Degraded: true').
Cache-Control: stale-if-error, stale-while-revalidate '.

gRPC

'UNAVAILABLE', 'DEADLINE _ EXCEEDED', müştəri/proxy siyasəti retray semantikası.
Sorğu kontekstində Deadline/timeout; zəncir aşağı dövr yayılması.

İdempotentlik

POST əməliyyatları üçün «Idempotency-Key», sərhəddə deduplikasiya.

9) Standart icra (psevdokod)

pseudo onRequest(req):
if circuit. isOpen(dep):
return fallbackOrFail(req)

with timeout(T):
try:
resp = call(dep, req)
circuit. recordSuccess(dep, latency=resp. latency)
return resp except TimeoutError or 5xx as e:
circuit. recordFailure(dep)
if circuit. shouldOpen(dep):
circuit. open(dep, coolDown=adaptive())
return fallbackOrFail(req)

Half-Open test

pseudo onTimer():
if circuit. state(dep) == OPEN and coolDownExpired():
circuit. toHalfOpen(dep)

onRequestHalfOpen(req):
if circuit. allowTrial (dep): # e.g. 1 try: call -> success => close catch: reopen with longer coolDown else:
return fallbackOrFail(req)

10) Eşik konfiqurasiya

Müşahidə pəncərəsi: sürüşən N saniyə/sorğu.
Xəta həddi: pəncərədə 20-50% (profildən asılıdır).
Gecikmə həddi: p95 ≤ hədəf SLO (məsələn, 300-500 ms); artıq CB üçün «səhv» kimi nəzərə alınır.
Adaptiv cool-down: 10s → 30s → 60s təkrar işə salındıqda.

11) Test və xaos təcrübələri

Chaos: enjeksiyon gecikmə/səhvlər, DNS qırılması, drop paketləri.
Game days: döyüş kimi mühit açar «açma» başlamaq, fallback yoxlama.
Canary: 1-5% trafik üçün əvvəlcə SV/deqradasiya siyasətlərini daxil edin.
SLO-büdcə: error-budget tükənənə qədər təcrübələrə icazə verin.

12) Multitenantlıq ilə inteqrasiya

CB vəziyyəti per-dependency per-tenant (səs-küylü kirayəçilər üçün) və ya qlobal - yükləmə profilindən asılı olaraq saxlanıla bilər.
Fallback məlumatları və caches 'tenant _ id' ilə seqmentləşdirin.
Prioritetlər/kvotalar - planlara uyğun olaraq (VIP Starter davranışından əziyyət çəkməməlidir).

13) Satış öncəsi yoxlama siyahısı

  • Zaman keçidləri və müddətlər keçidlidir və razılaşdırılmışdır.
  • Retrajlar məhduddur, yalnız idempotent əməliyyatlar üçün, backoff + jitter ilə.
  • CB eşik qiymətləri yük testi məlumatları ilə əsaslandırılır.
  • Fallback yolları mövcuddur, sürətli və təhlükəsiz; cache siyasətləri müəyyən edilmişdir.
  • Bulkhead-izolyasiya: ayrı hovuzlar/növbələr/limitlər.
  • Metriklər/treys/loqlar CB deqradasiyasını və vəziyyətini qeyd edir.
  • Başlıq/kod nümunələri ilə cavab müqavilələrinin sənədləşdirilməsi (HTTP/gRPC).
  • Xaos ssenariləri və oyun günləri müntəzəm olaraq keçirilir; runbook var.

14) Tipik səhvlər

Heç bir zaman kəsimi yoxdur → retrai «durmadan» və kaskad düşmə.
Seçki əvəzinə vahid qlobal CB (end-point/metod üzrə) - əlavə imtinalar.
Deqradasiya UX əvəzinə fallback → «boş» ekranlar olmadan açıq açar.
Jitter olmadan retrailer → sinxron istək fırtınaları.
Qısamüddətli nasazlıqlarda uzun cool-down və ya sabit vəziyyətlərdə çox qısa - «flip-flop» halları.
Bulkhead olmaması - ümumi hovuzların tükənməsi və «head-of-line blocking».

15) Sürətli strategiya seçimi

Yüksək əhəmiyyət: CB + Cache Stail Cavablar + hedging (qənaətlə).
Qeydlər/ödənişlər: ciddi vaxtlar, minimum retrains, idempotency keys, heç bir «çirkli» fallback.
Xarici API: CB aqressiv eşik, adaptiv cool-down, ciddi throttling.
Mikroservis pulsasiya yükü: bulkheads, concurrency caps, VIP prioritetləşdirilməsi.

Nəticə

Circuit Breaker və idarə olunan deqradasiya memarlığın "sığortası 'dır: onlar xaotik uğursuzluqları proqnozlaşdırıla bilən davranışa çevirirlər. Aydın vaxt, məhdudlaşdırılmış retrajlar, təcrid olunmuş hovuzlar, düşünülmüş fallback yolları və telemetriya sistemi asılılıq pozğunluğuna davamlı edir və SLO-nu hətta pik və qəza dövrlərində də saxlayır.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.