Circuit Breaker we degradasiýa
Circuit Breaker (CB), şowsuzlygy lokallaşdyrmak we apstrim hyzmatlaryny we ulanyjyny goramak üçin pese gaçýan garaşlylyga çagyryşlary kesýän gorag patternidir. Pese gaçmak (graceful degradation) - serişdeleriň ýetmezçiligi ýa-da şowsuzlyklar (mysal üçin, kesilen/doly däl maglumatlary yzyna gaýtarmak, "gymmat" fiçleri öçürmek) ýüze çykanda funksionallygyň aňly ýönekeýleşdirilmegi.
Esasy maksat: SLO we ulanyjy tejribesini kaskad ýykylmagynyň ýerine gözegçilik edilýän şowsuzlyklaryň hasabyna saklamak.
1) Haçan ulanmaly
Garaşlylyk durnuksyz: ösüş p95/p99, wagt, nädogry jogaplar.
Gaty çäklendirmeleri/jerimeleri bolan daşarky API.
Retralar tupany güýçlendirýän "agyr" yzlar (gözleg, teklipler, hasabatlar).
Howuzlaryň (birleşmeleriň, tredleriň) tükenmek howpy bolan ýokary ýüklenen ýerler.
2) CB ýagdaýlary we geçişleri
Klassiki üçlük:1. Closed - trafik gidýär, ýalňyşlyklaryň/gizlinligiň metrikleri hasaplanýar.
2. Açyk - jaňlar derrew ret edilýär (fil-fast) we/ýa-da fallback-e geçirilýär.
3. Half-Open - "synag" soraglarynyň çäkli sany açaryň ýapylmalydygyny ýa-da ýapylmajakdygyny kesgitleýär.
Açyş tetikleyicileri
Penjireden ýalňyşlyklaryň/wagtlaryň çäkleri (mysal üçin, iň soňky ≥ 50%).
Gizlinlik çäkleri (mysal üçin p95> maksatly).
Kombinirlenen syýasatlar (ýalňyşlyklar ∧ wagtyndan artyk).
Saklamak wagty (cool-down)
Kesgitlenen (mysal üçin, 10-60 sek) ýa-da uýgunlaşdyrylan (gaýtalananda eksponensial köpelmek).
3) Taýmautlar, retralar we jitler
Wagtlar elmydama SLO-dan has gysga we zynjyr boýunça ylalaşylýar (deadline propagation).
Diňe idempotent amallary üçin retralar; Köplenç 1-2 synanyşyk ýeterlikdir.
Backoff + jitter (full jitter) gaýtalamalaryň sinhron tolkunlarynyň öňüni alýar.
Hedging (ätiýaçlyk soraglary) - tygşytly we diňe gaty tankydy okamak üçin.
4) Bulkhead-izolýasiýa we "goragçylar"
Baglanyşyklaryň/workerleriň/nobatlaryň howuzlaryny domenler we traffigiň görnüşleri boýunça bölüň (VIP, fon meseleleri, köpçülige açyk API).
"Gymmat" amallar üçin kaps concurrency.
Admission control: nobat doldurylanda ýerine ýetirilmezinden öň aňsat boýun gaçyrma.
5) Fallback we zaýalanma ssenarileri
Wariantlar
Cache/Stail jogaplary: 'stale-while-revalidate', L2/L3 cache-den maglumatlary yzyna gaýtarmak.
Read-only :/buýruklary ýazmak, howpsuz okamaga rugsat bermek.
Surrogat jogaplar: doly däl maglumatlar (mysal üçin, teklipsiz/awatarsyz).
Funksiýany öçürmek: möhüm däl widjetleri/şekilleri wagtlaýyn gizläň.
Feature flags: Çykmazdan özüňi alyp barşyň çalt üýtgemegi.
Düzgünler
Fallback maglumatlar boýunça kesgitlenen, çalt we howpsuz bolmaly.
Pese gaçan ýoly äşgär belläň.
6) Ileri tutulýan we traffik-şeýping
VIP/tölegli meýilnamalar - ýetmezçilik ýüze çykan halatynda has uly ileri tutulýan/kwotalar.
Rate limits we throttling peselen endiklere ýükleri azaldýar.
"Shed load": durnuklaşmazdan ozal hiliň ýumşak peselmegi (mysal üçin, az netijeler, kesilen suratlar).
7) Gözegçilik we signaling
CB metrikleri
Ýagdaýy (closed/open/half-open) we dowamlylygy.
Sebäplere görä şowsuzlyklaryň paýy: CB-open, timeout, 5xx, retry-exhausted.
p95/p99 açaryň gizlinligi "öň" we "soň".
Fallback arkaly haýyşlaryň sany/paýy.
Treýsing
Span düşündirişleri: 'circuit = opened', 'fallback = cache', 'admission = denied'.
Çäklendirmeler (429/RateLimit-), nobatlar we birikmeleriň oklary bilen baglanyşyk.
Giriş/audit
Açmagyň/ýapmagyň sebäbi, bosagalar, endikleriň kesgitleýjileri.
8) Şertnamalar we teswirnama
HTTP
Fail-fast: '503 Service Unavailable' c 'Retry-After' (ýa-da '429' çäklerde).
Partial content/stail: '200 '/' 206' degradasiýa meta-maglumatlary bilen (mysal üçin 'X-Degraded: true').
Keş syýasaty: 'Cache-Control: stale-if-error, stale-while-revalidate'.
gRPC
'UNAVAILABLE', 'DEADLINE _ EXCEEDED', müşderi/proxy syýasaty boýunça retraýlaryň semantikasy.
Soragyň mazmunynda deadline/timeout; möhletiň zynjyrdan aşak ýaýramagy.
Idempotentlik
POST-amallar üçin 'idempotency-Key', serhetdäki de-duplikasiýa.
9) Nusgawy ýerine ýetiriş (ýalan resminama)
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 synagy
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) Bosagalary sazlamak
Gözegçilik penjiresi: süýşýän N sekunt/soraglar.
Ýalňyşlyklaryň çägi: penjirede 20-50% (profiline bagly).
Gizlinlik çäkleri: p95 ≤ maksatly SLO (mysal üçin 300-500 ms); artykmaçlyk CB üçin "ýalňyşlyk" hökmünde kabul edilýär.
Adaptiw cool-down: 10s → 30s → 60s gaýtalananda.
11) Synag we bulam-bujarlyk amallary
Chaos: gizlinlik/ýalňyşlyk, DNS döwülmegi, bukjalary taşlamak.
"Game days": Ok-däri ýaly gurşawda "açar" açar, fallback barlagy.
Canary: 1-5% traffik üçin ilki bilen SV/zaýalanma syýasatlaryny açyň.
SLO-býudjet: error-budget gutarýança synaglara ýol beriň.
12) Köp tenantlyk bilen integrasiýa
CB ýagdaýy per-dependency per-tenant (şowhunly kärendeçiler üçin) ýa-da global derejede - ýüküň profiline baglylykda saklanyp bilner.
Fallback maglumatlary we nagt pullary 'tenant _ id' boýunça bölüň.
Ileri tutulýan ugurlar/kwotalar - meýilnamalara laýyklykda (VIP Starter-iň özüni alyp barşyndan ejir çekmeli däldir).
13) Azyk önüminden öň çek-sanawy
- Wagtlar we möhletler doly we utgaşdyrylan.
- Retraýlar çäklidir, diňe idempotent amallary üçin, backoff + jitter bilen.
- CB-iň çäk bahalary ýük synagynyň maglumatlaryna esaslanýar.
- Fallback ýollary bar, çalt we howpsuz; Syýasatçylaryň keşi kesgitlenildi.
- Bulkhead-izolýasiýa: aýratyn howuzlar/nobatlar/çäkler.
- Metrikler/söwdalar/loglar CB-iň zaýalanmalaryny we ýagdaýlaryny belleýärler.
- Gollanmalaryň/kodlaryň mysallary bilen jogap şertnamalarynyň resminamalary (HTTP/gRPC).
- Bulam-bujarlyk ssenarileri we oýun günleri yzygiderli geçirilýär; runbook bar.
14) Adaty ýalňyşlyklar
Taýmautlar ýok → retralar we kaskadly ýykylmalar.
Saýlawyň ýerine ýeke global CB (endpoint/usul boýunça) - goşmaça şowsuzlyklar.
Fallback-siz açyk açar → peseldilen UX-iň ýerine "boş" ekranlar.
Jittersiz retraýlar → sinhron soraglar tupanlary.
Gysga möhletli şowsuzlyklarda uzak cool-down ýa-da durnukly ýagdaýlarda gaty gysga - "flip-flop".
Bulkhead ýoklugy - umumy howuzlaryň tükenmegi we "head-of-line blocking".
15) Strategiýany çalt saýlamak
Örän möhüm okalyşlar: CB + Stail-jogaplar keş + hedging (tygşytly).
Ýazgylar/tölegler: berk wagtlar, iň az retraýlar, idempotency keys, "hapa" fallback ýoklugy.
Daşarky API: Agressiw bosagaly CB, adaptasiýa cool-down, berk throttling.
Mikroservisler: bulkheads, caps on concurrency, ileri tutulýan VIP.
Netije
"Circuit Breaker" we dolandyrylýan pese gaçmak arhitekturanyň "ätiýaçlandyryşy": olar bulam-bujar ret etmegi öňünden aýdyp boljak hereketlere geçirýärler. Aç-açan wagtlar, jitter bilen çäklendirilen retralar, izolirlenen howuzlar, oýlanyşykly fallback ýollary we telemetriýa ulgamy garaşlylygyň şowsuzlyklaryna çydamly edýär we iň ýokary we adatdan daşary döwürlerde-de SLO-ny saklaýar.