GH GambleHub

Circuit Breaker va degradatsiya

Circuit Breaker (CB) - bu nosozlikni blokirovka qilish va foydalanuvchi va apstrim xizmatlarini himoya qilish uchun tanazzulga uchragan qaramlikka qarshi qo’ng’iroqlarni to’xtatadigan himoya patterni. Degradatsiya (graceful degradation) - resurslar yetarli boʻlmaganda yoki nosozlikda funksionallikni ongli ravishda soddalashtirish (masalan, keshlangan/toʻliq boʻlmagan maʼlumotlarni qaytarish, «qimmat» fichni oʻchirish).

Asosiy maqsad: SLO va foydalanuvchi tajribasini kaskadli yiqilish o’rniga nazorat qilinadigan nosozliklar hisobiga saqlab qolish.

1) Ushbu Nizomning

Bog’liqlik beqaror: o’sish p95/p99, taymautlar, noto’g’ri javoblar.
Qattiq limitli/penaltili tashqi API.
Retralar bo’ronni kuchaytiradigan «og’ir» orqa tomonlar (qidirish, tavsiyalar, hisobotlar).
Pullarning (birikmalarning, tredlarning) tugash xavfi yuqori yuklangan uchastkalar.

2) CB holatlari va o’tish joylari

Klassik uchlik:

1. Closed - trafik davom etmoqda, xato/latentlik metrikasi hisoblanadi.

2. Open - qoʻngʻiroqlar darhol rad etiladi (fail-fast) va/yoki fallbackga oʻtkaziladi.

3. Half-Open - «sinov» soʻrovlarining cheklangan soni oʻchirgichni yopish-yopmasligini aniqlaydi.

Ochish triggerlari

Oyna uchun xato/taymaut chegarasi (masalan, oxirgi Ndan 50% ≥).
Latentlik chegarasi (masalan, p95> maqsadli).
Kombinatsiyalangan siyosatlar (xatolar ∧ taymautdan oshib ketish).

Ushlab qolish vaqti (cool-down)

Qat’iy (masalan, 10-60 sek) yoki adaptiv (takroriy ishga tushirishda eksponensial o’sish).

3) Taymautlar, retraylar va jitter

Taymautlar har doim SLO apstrimidan qisqaroq va zanjir bo’yicha kelishilgan (deadline propagation).
Retrai faqat idempotent operatsiyalari uchun; Ko’p hollarda 1-2 ta urinish etarli.
Backoff + jitter (full jitter) sinxron takrorlash toʻlqinlarining oldini oladi.
Hedging (zaxira so’rovlar) - tejamkor va faqat juda tanqidiy o’qish uchun.

4) Bulkhead-izolyatsiya va «saqlagichlar»

Ulanish/vorker/navbat pullarini domenlar va trafik turlari (VIP, fon vazifalari, ommaviy API) bo’yicha ajrating.
«Qimmatbaho» operatsiyalar uchun caps on concurrency.
Admission control: navbat to’lib ketganda bajarishdan oldin oson rad etish.

5) Fallback va degradatsiya stsenariylari

Variantlar

Kesh/Steyl javoblari:’stale-while-revalidate’, L2/L3 keshdan maʼlumotlarni qaytarish.
Read-only: blok/buyruqlar yozish, xavfsiz o’qishga ruxsat berish.
Surrogat javoblar: to’liq bo’lmagan ma’lumotlar (masalan, tavsiyalarsiz/avatarsiz).
Funksional oʻchirish: tanqidiy boʻlmagan vidjetlarni vaqtincha yashirish.
Feature flags: relizsiz xulq-atvorni tez oʻzgartirish.

Qoidalar

Fallback determinik, tezkor va xavfsiz boʻlishi kerak.
Buzilgan yo’lni loglar/treyslar/metriklarda aniq belgilang.

6) Ustuvorlik va trafik-sheyping

VIP/to’lov rejalari - taqchillikda eng katta ustuvorlik/kvotalar.
Rate limits va throttling degradatsiyaga uchragan qaramliklarni kamaytiradi.
Shed load: barqarorlashgunga qadar sifatning yumshoq pasayishi (masalan, kamroq natijalar, qisqartirilgan tasvirlar).

7) Kuzatuv va signaling

CB metrikasi

Holati (closed/open/half-open) va davomiyligi.
Sabablar bo’yicha nosozliklar ulushi: CB-open, timeout, 5xx, retry-exhausted.
p95/p99 o’chirgichning «gacha» va «keyin» latentligi.
Fallback orqali soʻrovlar soni/ulushi.

Treysing

Span izohlari:’circuit = opened’,’fallback = cache’,’admission = denied’.
Chegaralar (429/RateLimit-), navbatlar va ulanish o’qlari bilan bog’lanish.

Logi/audit

Ochish/yopish sababi, chegaralar, qaramlik identifikatorlari.

8) Kontraktlar va bayonnoma

HTTP

Fail-fast:’503 Service Unavailable’s’Retry-After’(yoki limitlarda’429’).
Partial content/steyl:’200 ’/’ 206’degradatsiya meta-maʼlumotlari bilan (masalan,’X-Degraded: true’).
Kesh siyosati:’Cache-Control: stale-if-error, stale-while-revalidate’.

gRPC

’UNAVAILABLE’,’DEADLINE _ EXCEEDED’, mijoz/proksi siyosati bo’yicha retray semantikasi.
Soʻrov kontekstida Deadline/timeout; muddatning zanjir bo’ylab pastga tarqalishi.

Idempotentlik

POST-operatsiyalar uchun «Idempotency-Key», chegarada de-duplikatsiya.

9) Namunaviy amalga oshirish (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 namunasi

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) Ostonalarni sozlash

Kuzatuv oynasi: harakatlanuvchi N soniya/soʻrov.
Xato chegarasi: oynada 20-50% (profilga bogʻliq).
Latentlik chegarasi: p95 ≤ maqsadli SLO (masalan, 300-500 ms); ortiqcha CB uchun «xato» sifatida hisobga olinadi.
Moslashuvchan cool-down: 10s → 30s → 60s qayta ishga tushirilganda.

11) Test va xaos-amaliyot

Chaos: yashirin/xato inyeksiyasi, DNS sinishi, drop paketlar.
Game days: O’q-dorilarga o’xshash muhitda o’tkazgichni «ochish», fallbackni tekshirish.
Canary: 1-5% trafik uchun avval SV/degradatsiya siyosatini kiriting.
SLO-byudjet: error-budget tugaguncha tajriba o’tkazing.

12) Ko’p tenantlik bilan integratsiya qilish

CB holatini per-dependency per-tenant (shovqinli ijarachilar uchun) yoki global miqyosda - yuklama profiliga qarab saqlash mumkin.
Fallback ma’lumotlari va keshlarni’tenant _ id’bo’yicha segmentlashtiring.
Ustuvorliklar/kvotalar - rejalarga muvofiq (VIP Starter xatti-harakatlaridan aziyat chekmasligi kerak).

13) Sotishdan oldingi chek-varaq

  • Vaqt va muddatlar uzluksiz va kelishilgan.
  • Retraylar cheklangan, faqat idempotent operatsiyalari uchun, backoff + jitter bilan.
  • CB chegara qiymatlari yuklama testi ma’lumotlari bilan asoslanadi.
  • Fallback yo’llari mavjud, tezkor va xavfsiz; siyosatning keshi aniqlandi.
  • Bulkhead-izolyatsiya: alohida pullar/navbatlar/limitlar.
  • Metriklar/treyslar/loglar CB degradatsiyalari va holatlarini belgilaydi.
  • Javob shartnomalari hujjatlari (HTTP/gRPC) sarlavha/kodlar misollari bilan.
  • Xaos-stsenariylar va game-days muntazam ravishda o’tkaziladi; runbook mavjud.

14) Tipik xatolar

Hech qanday taymaut yo’q → to’g’ridan to’g’ri retryalar va kaskad tushishlari.
Saylov o’rniga yagona global CB (endpoint/usul bo’yicha) - ortiqcha rad etish.
Fallback bo’lmagan ochiq o’chirgich → degradatsiyalangan UX o’rniga «bo’sh» ekranlar.
Jittersiz retrajlar → sinxron so’rovlar bo’ronlari.
Uzoq cool-down qisqa muddatli nosozliklarda yoki «flip-flop» barqaror holatlarda juda qisqa.
Bulkhead yo’qligi - umumiy pullarning kamayishi va «head-of-line blocking».

15) Strategiyani tez tanlash

Yuqori darajadagi oʻqishlar: CB + steyl-javoblar keshi + hedging (tejamkor).
Yozuvlar/to’lovlar: qat’iy taymautlar, minimal retraylar, idempotency keys, «iflos» fallback yo’qligi.
Tashqi API: tajovuzkor ostonali CB, adaptiv cool-down, qattiq throttling.
Mikroservislar: bulkheads, caps on concurrency, ustuvorlik VIP.

Xulosa

Circuit Breaker va boshqariladigan degradatsiya - bu arxitekturaning «sug’urtasi»: ular noto’g’ri xatti-harakatlarni oldindan aytib bo’ladigan xatti-harakatlarga o’tkazadilar. Aniq taymautlar, cheklangan retrajlar, izolyatsiyalangan pullar, puxta o’ylangan fallback-yo’llar va telemetriya tizimni bog’liqlikning uzilishiga chidamli qiladi va hatto eng yuqori va avariya davrida ham SLOni ushlab turadi.

Contact

Biz bilan bog‘laning

Har qanday savol yoki yordam bo‘yicha bizga murojaat qiling.Doimo yordam berishga tayyormiz.

Integratsiyani boshlash

Email — majburiy. Telegram yoki WhatsApp — ixtiyoriy.

Ismingiz ixtiyoriy
Email ixtiyoriy
Mavzu ixtiyoriy
Xabar ixtiyoriy
Telegram ixtiyoriy
@
Agar Telegram qoldirilgan bo‘lsa — javob Email bilan birga o‘sha yerga ham yuboriladi.
WhatsApp ixtiyoriy
Format: mamlakat kodi va raqam (masalan, +998XXXXXXXX).

Yuborish orqali ma'lumotlaringiz qayta ishlanishiga rozilik bildirasiz.