GH GambleHub

تخریب برازنده

1) ماهیت رویکرد

تخریب برازنده انتقال مدیریت شده از یک سیستم به یک حالت ساده تر اما مفید زمانی که منابع کمیاب هستند، وابستگی شکست، و یا اوج بار است. هدف این است که هسته اصلی ارزش کاربر و انعطاف پذیری پلت فرم را با قربانی کردن قابلیت های ثانویه و کیفیت حفظ کنیم.

خواص کلیدی:
  • قابل پیش بینی: سناریوهای از پیش تعریف شده و تخریب «نردبان».
  • محدود کردن شعاع ضربه: ویژگی ها و محدودیت ها را جدا کنید.
  • قابلیت مشاهده: معیارها، سیاهههای مربوط و ردیابی «چه سطح تخریب فعال است و چرا».
  • برگشت پذیری: بازگشت سریع به حالت عادی.

2) اصول و مرزها

1. نکته اصلی را ذخیره کنید: SLA/SLO اصلی شما (به عنوان مثال «خرید»، «ورود»، «جستجو») - اولویت بالاتر از ثانویه است (آواتار، توصیه، انیمیشن).

2. خرابی باز در مقابل خرابی بسته:
  • امنیت، پرداخت، حقوق - شکست بسته (امتناع بهتر از نقض).
  • محتوای کش, نکات, آواتار - شکست باز با folback.
  • 3. بودجه های زمانی: تایم اوت های بالا به پایین (client
  • 4. کنترل هزینه: تخریب باید مصرف CPU/IO/شبکه را کاهش دهد، نه فقط «پنهان کردن» خطاها.

3) سطح تخریب

3. 1 مشتری/UX

اسکلت/متغیرهایی و بارگذاری «تنبل» ویدجت ثانویه.
UI جزئی: بلوک های بحرانی بارگذاری می شوند، بلوک های ثانویه پنهان/ساده می شوند.
حافظه نهان سمت مشتری: آخرین شناخته شده (LKG) با علامت «داده ها ممکن است منسوخ شده باشند».
حالت آفلاین: صف فرمان با تکرار بعد (idempointence!).

3. 2 لبه/CDN/WAF/API دروازه

stale-while-revalidate: کش را می دهیم، پس زمینه را به روز می کنیم.
محدود کردن نرخ و بارگذاری بار: هنگام بارگیری، ترافیک پس زمینه/ناشناس را بازنشانی کنید.
مسیریابی Geofence/Weighted: ترافیک به نزدیکترین منطقه سالم هدایت می شود.

3. 3 لایه خدمات

پاسخ جزئی: بازگشت بخشی از + «هشدار» داده است.
حالت فقط خواندنی: به طور موقت ممنوع جهش (پرچم).
Brownout: موقت غیر فعال کردن ویژگی های منابع فشرده (توصیه, غنی سازی).
همزمانی تطبیقی: به صورت پویا همزمانی را کاهش میدهد.

3. 4 داده/جریان

کش به عنوان یک منبع حقیقت با TTL (به طور موقت): «تقریبا بهتر از هیچ چیز».
کاهش دقت مدل ها/الگوریتم ها (مسیر سریع در مقابل مسیر دقیق).
تعویق/صف - انتقال وظایف سنگین به پس زمینه (صندوق خروجی/صف کار).
صف های اولویت: رویدادهای بحرانی - در یک کلاس جداگانه.

4) تخریب «نردبان» (کتاب های بازی)

مثال برای API جستجو:
  • L0 (عادی) → L1: مخفی کردن شخصی سازی و آگهی ها → L2: جستجوی مترادف/فازی را غیرفعال کنید → L3: محدود کردن اندازه پاسخ و اتمام وقت تا 300 ms → L4: نتایج را از حافظه پنهان 5 دقیقه → L5: «فقط خواندنی و فقط ذخیره شده» + صف درخواست برای محاسبه مجدد.
برای هر سطح موارد زیر ثبت می شود:
  • Triggers: CPU overload> 85% p95> target, errors> threshold, Kafka> threshold flag, dependency flag.
  • اقدامات: پرچم X را روشن کنید، همزمانی را به N کاهش دهید، منبع Y را به حافظه پنهان تغییر دهید.
  • معیارهای خروج: 10 دقیقه معیارهای سبز، سر منابع.

5) سیاست های تصمیم گیری

5. 1 بودجه اشتباه و SLO

از نرخ سوزاندن بودجه خطا به عنوان یک محرک قهوه ای/ریختن استفاده کنید.
خط مشی: «اگر میزان سوختگی> 4 × در عرض 15 دقیقه - تخریب L2 را روشن کنید».

5. 2 کنترل پذیرش

ما RPS ورودی را در مسیرهای بحرانی محدود می کنیم تا p99 را تضمین کنیم و از فروپاشی صف جلوگیری کنیم.

5. 3 اولویت بندی

کلاس ها: تعاملی> سیستم> پس زمینه.
اولویت های هر مستاجر (طلا/نقره/برنز) و عدالت (سهم عادلانه).

6) الگوها و پیاده سازی ها

6. 1 ریختن بار

درخواستها را قبل از اینکه تمام منابع را بگیرند، حذف کنید.
بازگشت «429 »/« 503» با «دوباره سعی کنید پس از» و توضیح سیاست (برای مشتریان).

نماینده (همزمانی تطبیقی + شکستن مدار)

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 (ساده سازی موقت)

ایده: برای کاهش «روشنایی» (هزینه) ویژگی زمانی که منابع در حال اجرا هستند.

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. ۳ پاسخ و هشدارهای جزئی

فیلد «هشدار »/« تخریب» در پاسخ:
json
{
"items": [...],
"degradation": {
"level": 2,
"applied": ["cache_only", "no_personalization"],
"expiresAt": "2025-10-31T14:20:00Z"
}
}

6. 4 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 سوئیچ فقط خواندنی (Kubernetes + پرچم)

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

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

6. 6 کافکا: کلاس های فشار پشتی و صف

مصرف کنندگان سنگین را به «max» کوچکتر تغییر دهید. نظرسنجی. سوابق، محدود کردن دسته تولید و.
رویدادهای «انتقادی» و «فله» را بر اساس موضوع/سهمیه جدا کنید.

6. 7 UI: عقب نشینی برازنده

پنهان کردن ویدجت های «سنگین»، نشان دادن کش/اسکلت و به وضوح برچسب داده های قدیمی.

7) نمونه های پیکربندی

7. 1 Istio outlier + استخرهای اولویت

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

7. 2 Nginx: ترافیک پس زمینه زیر چاقو اول

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 ویژگی های پرچم/کشتن سوئیچ

ذخیره در پیکربندی پویا (ConfigMap/Consul)، به روز رسانی بدون انتشار.
جداگانه هر ویژگی و پرچم های جهانی، فعال ورود به سیستم.

8) قابلیت مشاهده

8. 1 معیارها

«degradation _ level {service}» سطح فعلی است.
'shed _ requests _ total {route, reason}' - مقدار بازنشانی و چرایی آن چقدر است.
'stale _ responses _ total' - چه مقدار کش صادر شده است.
'read _ only _ mode _ seconds _ total'.
'brownout _ activations _ total {feature}'.
بودجه اشتباه: نرخ سوختن، نسبت نقض SLO.

8. 2 ردیابی

ویژگی های دهانه: 'degraded = true', 'level = 2', 'reason = upstream _ timeout'.
پیوندهای بین درخواستهای retrays/hedged برای دیدن سهم در دم.

8. 3 سیاههها/هشدارها

سطح تخریب حوادث سوئیچ با علل تغییر و مالک.
هشدار برای سطح «چسبیده» (تخریب طول می کشد بیش از حد طولانی).

9) مدیریت ریسک و امنیت

تأیید اعتبار/مجوز/یکپارچگی داده ها را کاهش ندهید: شکست بهتر.
ماسک PII در هر حالت حفظ می شود.
امور مالی/پرداخت: تنها معاملات بی نظیر، زمان بندی دقیق و بازپرداخت ؛ در شک - فقط خواندنی/نگه دارید.

10) ضد الگوهای

تخریب آرام بدون ایجاد کاربر و بدون تله متری.
طوفان های Retray به جای ریختن بار و زمان کوتاه.
جهانی «سوئیچ» بدون تقسیم بندی - شعاع انفجار بزرگ.
prod و مسیرهای سبک وزن را در همان کش/صف مخلوط کنید.
تخریب ابدی: brownout به عنوان «عادی جدید»، معیارهای خروج فراموش شده.
Stale-write: تلاش برای نوشتن بر اساس دادههای stale.

11) چک لیست پیاده سازی

  • ارزش اصلی و سناریوهای مهم کاربر تعریف شده است.
  • نردبان تخریب توسط سرویس/domaine با باعث و خروجی وارد شده است.
  • زمان بندی/محدودیت ها و بارگذاری سمت سرور وارد می شوند.
  • محدودیت های نرخ و کلاس های ترافیک اولویت پیکربندی شده اند.
  • پاسخ جزئی اجرا شده، فقط خواندنی، stale-while-revalidate.
  • پرچم ویژگی های یکپارچه/کشتن سوئیچ با حسابرسی.
  • متریک/ردیابی/هشدار برای سطوح تخریب و علل.
  • به طور منظم تمرینات روز بازی با اضافه بار شبیه سازی/شکست.
  • SLO مستند و خطا بودجه → سیاست تخریب.

12) سوالات متداول

س: هنگامی که برای انتخاب قهوه ای و زمانی که به ریختن ؟

A: اگر هدف این است که کاهش هزینه درخواست بدون شکست - brownout. اگر هدف این است که برای محافظت از سیستم زمانی که حتی ساده سازی کمک نمی کند، ریختن ورود به سیستم.

س: آیا من گزارش تخریب به کاربر ؟

A: برای سناریوهای بحرانی - بله (نشان «حالت محدود»). شفافیت حمایت و نارضایتی را کاهش می دهد.

س: آیا می توان یک حافظه پنهان را منبع حقیقت دانست ؟

A: به طور موقت - بله، با SLA های صریح و برچسب های پیری. برای جهش - ممنوع است.

س: چگونه می توان «شکسته» نشد ؟

A: مدت زمان کوتاه، عقب نشینی نمایشی با jitter، idempotency و حد تلاش ؛ فقط عملیات ایمن را انجام دهید.

13) مجموع

تخریب برازنده یک قرارداد معماری و مجموعه ای از حالت های کنترل شده عملکرد است که توسط سیگنال های معیارها و بودجه اشتباه روشن می شود. پله ها به درستی طراحی شده، زمان بندی دقیق و ریختن، cashback و brownout، به علاوه قابلیت مشاهده قدرتمند - و پلت فرم خود را مفید و مقرون به صرفه حتی در طوفان باقی می ماند.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.