GH GambleHub

Nafis degradatsiya

1) yondashuvning mohiyati

Zerikarli degradatsiya - bu tizimning resurslar yetishmasligi, qaramlik buzilishi yoki yuklamaning eng yuqori cho’qqilarida boshqariladigan sodda, ammo foydali rejimga o’tishidir. Maqsad - ikkinchi darajali imkoniyat va sifatni qurbon qilib, foydalanuvchi uchun qadriyatni va platformaning barqarorligini saqlab qolishdan iborat.

Asosiy xususiyatlar:
  • Bashorat qilinishi mumkin: oldindan belgilangan stsenariylar va degradatsiya «zinapoyalari».
  • Shikastlanish radiusini cheklash: fich va qaramliklarni izolyatsiya qilish.
  • Kuzatish: metrika, loglar va trasirovkalar «tanazzulning qaysi darajasi faol va nima uchun».
  • Qaytaruvchanlik: tezda normal holatga qaytish.

2) Prinsiplar va chegaralar

1. Asosiy narsani saqlab qolish: asosiy SLA/SLO (masalan, «sotib olish», «login», «qidirish») - ikkinchi darajali (avatarlar, tavsiyalar, animatsiyalar) dan ustun.

2. Fail-open vs fail-closed:
  • Xavfsizlik, to’lovlar, huquqlar - fail-closed (qoidabuzarlikdan ko’ra rad etish yaxshiroqdir).
  • Folback bilan joʻnatiladigan kontent, maslahatlar, avatarlar - fail-open.
  • 3. Vaqtinchalik byudjetlar: taymautlar yuqoridan pastga (mijoz
  • 4. Qiymat nazorati: degradatsiya xatolarni shunchaki «yashirish» emas, balki CPU/IO/tarmoq isteʼmolini kamaytirishi kerak.

3) Degradatsiya darajalari

3. 1 Mijoz/UX

Skeletons/pleysholderlar va ikkinchi darajali vidjetlarni «dangasa» yuklash.
Partial UI: tanqidiy bloklar yuklanadi, ikkilamchi bloklar yashiriladi/soddalashtiriladi.
Mijoz tomonidagi kesh: last-known-good (LKG) «maʼlumotlar eskirishi mumkin».
Oflayn rejim: qaytadan buyruqlar navbati (idempotentlik!).

3. 2 Edge/CDN/WAF/API-shlyuz

stale-while-revalidate: kesh beramiz, fon yangilaymiz.
Rate limiting & load shedding: ortiqcha yuklashda orqa fon/anonim trafikni tashlaymiz.
Geofence/muvozanatli routing: trafik eng yaqin sog’lom mintaqaga olib ketilmoqda.

3. 3 Servis qatlami

Partial response: maʼlumotlarning bir qismini +’warnings’ga qaytaramiz.
Read-only rejimi: mutatsiyalarni vaqtincha taqiqlash (bayroqlar).
Brownout: resurslarni talab qiladigan fazalarni vaqtincha uzib qo’yish (tavsiyalar, boyitish).
Adaptive concurrency: parallellikni dinamik ravishda kamaytiramiz.

3. 4 Ma’lumotlar/striming

TTL bilan haqiqat manbai sifatida kesh (vaqtincha): «Hech narsadan yaxshiroq».
Model/algoritmlarning aniqligi pasaygan (fast path vs accurate path).
Defer/queue: ogʻir vazifalarni fonga koʻchirish (outbox/job queue).
Ustuvor navbatlar: tanqidiy voqealar - alohida sinfda.

4) Degradatsiya «zinapoyalari» (playbooks)

Qidiruv API uchun misol:
  • L0 (norma) → L1: shaxsiylashtirish va bannerlarni yashirish → L2: sinonimlarni o’chirish/fazzi-qidirish → L3: javob va vaqtni 300 ms gacha cheklash → L4: 5 daqiqa keshdan natijalarni berish → L5: «read-only & cached only» + qayta hisoblash uchun so’rovlar navbati.
Har bir daraja uchun quyidagilar qayd etiladi:
  • Triggerlar: CPUni ortiqcha yuklash> 85% p95> maqsadli, xatolar> chegara, lag Kafka> chegara, qaramlik fap.
  • Amallar: X bayrogʻini yoqish, concurrency ni N ga tushirish, Y manbasini keshga oʻtkazish.
  • Chiqish mezonlari: 10 daqiqa yashil metriklar, resurslar bo’yicha zaxiralar.

5) Qarorlar qabul qilish siyosati

5. 1 Xato budjet va SLO

brownout/shedding triggeri sifatida error-budget burn rate’dan foydalaning.
Siyosat: «agar burn-rate> 4 × 15 daqiqa ichida - L2 degradatsiyani yoqish».

5. 2 Admission control

Kelayotgan RPSni p99 ni kafolatlash va navbatlarning qulashiga yo’l qo’ymaslik uchun tanqidiy yo’llarda cheklaymiz.

5. 3 Ustuvorlik

Sinflar: interactive> system> background.
Per-tenant ustuvorliklar (Gold/Silver/Bronze) va adolat (fair share).

6) Patternlar va realizatsiya qilish

6. 1 Load shedding (server)

So’rovlarni ular barcha resurslarni egallashidan oldin tashlang.
’429 ’/’ 503’ s’Retry-After’ni qaytaring va siyosatni tushuntiring (mijozlar uchun).

Envoy (adaptive concurrency + circuit breaking)

yaml typed_extension_protocol_options:
envoy. filters. http. adaptive_concurrency:
"@type": type. googleapis. com/envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency gradient_controller_config:
sample_aggregate_percentile: 90 circuit_breakers:
thresholds:
- max_requests: 2000 max_pending_requests: 500 max_connections: 1000

6. 2 Brownout (vaqtincha soddalashtirish)

G’oya: resurslar tugayotganda «yorqinlik» ni (qiymat) kamaytirish.

kotlin class Brownout(val level: Int) { // 0..3 fun recommendationsEnabled() = level < 2 fun imagesQuality() = if (level >= 2) "low" else "high"
fun timeoutMs() = if (level >= 1) 150 else 300
}

6. 3 Partial response va ogohlantirishlar

Javobda’warnings ’/’ degradation’maydoni:
json
{
"items": [...],
"degradation": {
"level": 2,
"applied": ["cache_only", "no_personalization"],
"expiresAt": "2025-10-31T14:20:00Z"
}
}

6. 4 Chekkada stale-while-revalidate (Nginx)

nginx proxy_cache_valid 200 10m;
proxy_cache_use_stale error timeout http_500 http_502 http_504 updating;
proxy_cache_background_update on;

6. 5 Read-only (Kubernetes + bayroq)

yaml apiVersion: v1 kind: ConfigMap data:
MODE: "read_only"

The code should check MODE and block mutations with a friendly message.

6. 6 Kafka: backpressure va navbat sinflari

Heavy-konsumerlarni kichikroq’max’ga oʻtkazing. poll. records’, ishlab chiqarish batch-i cheklang.
Topiklar/kvotalar boʻyicha «tanqidiy» va «bulk» hodisalarini ajrating.

6. 7 UI: graceful fallback

Og’ir vidjetlarni yashiring, kesh/skeletni ko’rsating va eskirgan ma’lumotlarni aniq belgilang.

7) Konfiguratsiya namunalari

7. 1 Istio: outlier + ustuvor pullar

yaml outlierDetection:
consecutive5xx: 5 interval: 10s baseEjectionTime: 30s maxEjectionPercent: 50

7. 2 Nginx: birinchi marta pichoq ostidagi fon trafigi

nginx map $http_x_priority $bucket { default low; high high; }

limit_req_zone $binary_remote_addr zone=perip:10m rate=20r/s;
limit_req_status 429;

server {
location /api/critical/ { limit_req zone=perip burst=40 nodelay; }
location /api/background/ {
limit_req zone = perip burst = 5 nodelay; # stricter
}
}

7. 3 Feature flags / kill-switches

Dinamik konfiguratsiyada saqlang (ConfigMap/Consul), yangilanish chiqarilmasdan.
Per-fich va global bayroqlarni baham ko’ring.

8) Kuzatish

8. 1 Metrika

’degradation _ level {service}’ - joriy daraja.
’shed _ requests _ total {route, reason}’ - qancha va nima uchun tashlangan.
’stale _ responses _ total’ - qancha kesh berilgan.
`read_only_mode_seconds_total`.
`brownout_activations_total{feature}`.
Noto’g "ri budjet: burn-rate, SLO buzilishlari ulushi.

8. 2 Treysing

Span atributlari:’degraded = true’,’level = 2’,’reason = upstream _ timeout’.
Retrajlar/xedged-soʻrovlar orasidagi linklar.

8. 3 Logi/alertlar

Tanazzul darajasini oʻzgartirish sabablari va egasi bilan almashtirish hodisalari.
Alertlar «yopishish» darajasida (tanazzul juda uzoq davom etadi).

9) Xavflarni boshqarish va xavfsizlik

Autentifikatsiya/avtorizatsiya/ma’lumotlar yaxlitligini buzmang: rad etish yaxshiroqdir.
PII kamuflyaj har qanday rejimlarda saqlanadi.
Moliya/to’lovlar: faqat idempotent operatsiyalari, qat’iy taymautlar va qaytarmalar; shubha tug’ilganda - read-only/hold.

10) Anti-patternlar

Foydalanuvchiga maslahatsiz va telemetriyasiz jim degradatsiya.
Load shedding va qisqa taymautlar o’rniga retray bo’ronlar.
Segmentatsiyasiz global «kesuvchilar» - ulkan blast radius.
Prod va engillashtirilgan yoʻllarni bitta kesh/navbatda aralashtirish.
Abadiy tanazzul: brownout «yangi norma» sifatida, unutilgan chiqish mezonlari.
Stale-write: eskirgan maʼlumotlar asosida yozishga urinishlar.

11) Joriy etish chek-varaqasi

  • Qiymatning yadrosi va tanqidiy foydalanuvchi stsenariylari aniqlandi.
  • Triggerlar va chiqish joylari bo’lgan servislar/uylar bo’yicha degradatsiya zinapoyalari tuzilgan.
  • Taymautlar/cheklovlar va server-side load shedding joriy etildi.
  • rate limits va ustuvor trafik sinflari moslashtirilgan.
  • Partial response, read-only, stale-while-revalidate amalga oshirildi.
  • Audit bilan integratsiyalashgan feature flags/kill-switches.
  • Degradatsiya darajalari va sabablari uchun metriklar/treysing/alertlar.
  • Ortiqcha yuk/nosozliklar simulyatsiyasi bilan muntazam game day mashqlari.
  • SLO va error-budget → degradatsiya siyosati hujjatlashtirilgan.

12) FAQ

Q: Qachon brownout, qachon shedding?
A: Agar maqsad - so’rovlar narxini rad etmasdan kamaytirish bo’lsa - brownout. Agar maqsad tizimni himoya qilish bo’lsa, hatto soddalashtirish ham yordam bermasa - kirish shedding.

Q: Buzilish haqida foydalanuvchiga xabar berish kerakmi?
A: Tanqidiy ssenariylar uchun - ha («cheklangan rejim» nishoni). Shaffoflik qoʻllab-quvvatlash va norozilikni kamaytiradi.

Q: Keshni haqiqat manbai qilish mumkinmi?
A: Vaqtincha - ha, aniq SLA va eskirish belgilari bilan. Mutatsiyalar uchun - taqiqlangan.

Q: Qanday qilib retrajlarni «buzilmagan» qilish mumkin?
A: Qisqa taymautlar, jitter bilan eksponensial backoff, idempotentlik va urinishlar limiti; retrayt faqat xavfsiz operatsiyalardir.

13) Yakunlar

Zerikarli degradatsiya - bu me’moriy kontrakt va metrika va noto’g "ri byudjet signallari bo’yicha qo’shiladigan boshqariladigan ish rejimlari to’plami. To’g’ri ishlab chiqilgan zinapoyalar, qat’iy taymautlar va shedding, kesh-folbeklar va brownout, shuningdek, kuchli kuzatuv - va platformaniz bo’ron paytida ham foydali va tejamkor bo’lib qoladi.

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.