خود درمانی و خود درمانی
(بخش: تکنولوژی و زیرساخت)
خلاصه ای کوتاه
بهبود خودکار «جادوی Kubernetes» نیست، بلکه مجموعه ای از رشته ها است: نمونه ها و محدودیت های صحیح، کنترل های کنترل شده، جداسازی موارد معیوب، اتوماسیون SLO و اقدامات runabook توسط دکمه/ربات. هدف کاهش MTTR بدون تراکم برف و نگه داشتن p95/p99، پرداخت و TTW حتی در اوج خود است.
1) اصول خود درمانی
1. Fail-fast & isolate: به سرعت شناسایی و جداسازی غلاف/موارد بد.
2. عقب نشینی + jitter: هر retray/scale out - با تاخیر نمایشی و لرزش.
3. SLO-aware: اتوماسیون با بودجه خطای سریع رایت فعال/افزایش یافته است.
4. Idempotency: معاملات تکراری امن هستند (به خصوص پرداخت/صف).
5. دفاع در عمق: نمونه ها، سهمیه ها، محدودیت ها، قطع کننده مدار، تخلیه بیرونی، محدودیت سرعت، حالت تخریب.
2) اساس در کوبرنتیز
2. 1 نمونه ها: زندگی/آمادگی/راه اندازی
startupProbe محافظت در برابر شروع مجدد زودرس از خدمات سنگین.
readinessProbe آمادگی برای ترافیک (انبارهای گرم/اتصالات) را تعیین می کند.
livenessProbe فرآیندهای آویزان را دوباره راه اندازی می کند.
yaml readinessProbe:
httpGet: { path: /health/ready, port: 8080 }
periodSeconds: 5 timeoutSeconds: 1 failureThreshold: 3
livenessProbe:
httpGet: { path: /health/live, port: 8080 }
initialDelaySeconds: 20 periodSeconds: 10 failureThreshold: 3
startupProbe:
httpGet: { path: /health/startup, port: 8080 }
periodSeconds: 5 failureThreshold: 30
2. 2 محدودیت ها، PDB و اولویت ها
درخواست/محدودیت حذف «همسایه پر سر و صدا».
PodDisruptionBudget (PDB) مانع از سقوط همه غلاف ها در همان زمان می شود.
yaml apiVersion: policy/v1 kind: PodDisruptionBudget spec:
minAvailable: 2 selector: { matchLabels: { app: payments-api } }
PriorityClass برای مسیرهای بحرانی (پرداخت، دروازه).
2. 3 راه اندازی مجدد و استقرار استراتژی
'maxUnavailable: 0' برای خدمات بحرانی ؛ rollingUpdate در افزایش های کوچک.
PodAntiAffinity غلاف ها را به گره ها/مناطق اختصاص می دهد.
3) مقیاس خودکار و مقیاس رویداد
HPA (CPU/معیارهای کاربر)
yaml apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
minReplicas: 3 maxReplicas: 30 metrics:
- type: Resource resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } }
- type: Pods pods:
metric:
name: http_requests_per_second target:
type: AverageValue averageValue: "50"
استفاده برای کارگران پس زمینه/وظایف دسته ای ؛ در prod-API - با دقت (راه اندازی مجدد).
KEDA (صف/رویدادهای خارجی)
محرک هایی برای تاخیر کافکا، درخواست های RabbitMQ، Redis، Prometheus - هنگامی که کار جمع می شود، مصرف کنندگان را افزایش می دهیم.
4) دفاع از شبکه: قطع کننده مدار و قطع «بد»
نماینده/تشخیص بیرونی Istio (идея)
yaml outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
Circuit Breaker درخواست ها/اتصالات همزمان را محدود می کند تا وابستگی را رها نکند.
محدود کردن نرخ
محدود کردن تماس های ورودی/مسیرهای PSP/از ارائه دهندگان بازی به طوری که موج retraces تصادف را افزایش نمی دهد.
5) Retrai، timeouts و عقب نشینی با لرزش
قانون: اولین وقفه، پس از آن عقب نشینی، همیشه با jitter و تلاش محدود است.
شبه کد:python def backoff(attempt, base=0. 1, cap=2. 0):
import random, math sleep = min(cap, base (2 attempt))
jitter = random. uniform(0, sleep 0. 4)
return sleep + jitter
برای پرداخت - کلید idempotent + deduplication.
برای صف - مرده نامه و تلاش مجدد معوق.
6) خود شفا در صف/جریان
هشدارهای رشد DLQ + بازفرآوری منفرد
تاخیر کنترل: مصرف کنندگان در مقیاس خودکار (KEDA)، فشار به تولید کنندگان.
دقیقا یک بار/حداقل یک بار - آگاهانه انتخاب شده است ؛ عملیات idempotent هستند.
7) پول نقد و گرم کردن
کلید نسخه ('v2:') برای ناتوانی امن/عقبگرد.
استخرهای گرم اتصالات به DB/PSP ؛ گرم کردن قبل از تعویض (آبی سبز/قناری).
Stale-while-revalidate برای کاهش بازدیدهای پایگاه داده «سرد».
8) خودکار اصلاح توسط SLO (اقدامات سیگنال)
ما burn-rate/TTW/p95 هشدارها را با اقدامات خودکار ایمن مرتبط می کنیم:- قناری/عقب را متوقف کنید при سریع بسوزید.
- مقیاس کردن کارگران با رشد «queue _ lag _ seconds».
- فعال کردن حالت تنزل (UX ساده، غیرفعال کردن ویژگی های سنگین).
- تغییر مسیر PSP هنگامی که زمان افزایش می یابد.
- فعال کردن قابلیت kill-switch.
yaml alert: WithdrawalsQueueLag labels: { action: "scale_workers", target: "withdrawals-consumers", by: "+5" }
9) حالت تخریب (تخریب برازنده)
ساده کردن UI (درخواست های کمتر)، خاموش کردن ویدجت های گران قیمت.
ذخیره سازی بیشتر، طرفداران کمتر/جمع آوری.
برای LLM/توصیه ها - اندازه زمینه/مدل را کاهش دهید، «مسیر سریع» را فعال کنید.
10) رویکرد GitOps به رفع خودکار
تمام سیاست ها و پارامترهای خودکار اصلاح (زمان بندی، آستانه) در Git هستند.
هر عمل خودکار یک حاشیه نویسی در Grafana و یک ورودی در گزارش تغییر ایجاد می کند.
سیاست های قناری و دروازه های SLO نیز کد هستند.
11) مهندسی هرج و مرج: بررسی اینکه شفا کار می کند
تزریق شکست: تاخیر شبکه، سقوط قلب، شکست شبیه ساز PSP، تاخیر صف.
سناریوهای روز بازی: ما MTTR، کیفیت اقدامات خودکار، حضور مصنوعات را اندازه گیری می کنیم.
نتایج → به روز رسانی از کتاب اجرا، آستانه، phicheflags.
12) قابلیت مشاهده برای بهبود خودکار
نمونه: پرش سریع از متریک p95 به مسیر.
سیاهههای مربوط به 'trace _ id' و فیلدهای 'retry'، 'تلاش'، 'degrade _ mode = true'.
داشبورد مقایسه (پایدار در مقابل قناری)، کارت SLO را آزاد کنید.
حسابرسی اقدامات خودکار: چه کسی/چه چیزی/چه زمانی، معیارهای منبع، نتیجه.
13) ایمنی و انطباق
هیچ رازی در سیاهههای مربوط/معیارهای اصلاح خودکار وجود ندارد.
برای فعالیت های پرداخت - تایید دوگانه/نقش.
Geo/PII - ترافیک را به منطقه «اشتباه» با یک feilover را.
14) قالب های عملی
Istio DestinationRule - استخر اتصال و پرت
yaml trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1000, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xx: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
پرچم دار - قناری با خودکار فلاش/رول بک
yaml analysis:
interval: 1m threshold: 5 metrics:
- name: request-success-rate thresholdRange: { min: 99 }
- name: request-duration thresholdRange: { max: 300 }
webhooks:
- name: smoke url: http://tester/smoke
KEDA ScaledObject - تاخیر کافکا
yaml triggers:
- type: kafka metadata:
topic: withdrawals bootstrapServers: broker:9092 consumerGroup: w-consumers lagThreshold: "5000"
15) چک لیست پیاده سازی
1. نقاط پایانی راه اندازی/آمادگی/زندگی و سلامت پیکربندی شده اند.
2. محدودیت/درخواست منابع + PDB/ضد وابستگی.
3. HPA/KEDA برای API ها و کارگران ؛ معیارهای تاخیر/توان.
4. قطع کننده مدار، تخلیه بیرونی، محدودیت سرعت در دروازه/مش.
5. Retray با عقب نشینی + jitter، idempotency معاملات پرداخت.
6. حافظههای نهان نسخه و حالت تنزل.
7. دروازه SLO → اقدامات خودکار (بازگشت/مقیاس/تغییر مسیر/کشتن سوئیچ).
8. کد سیاست GitOps + اقدامات حسابرسی، حاشیه نویسی انتشار.
9. تست هرج و مرج و روز بازی در سناریوهای کلیدی.
10. MTTR/داشبورد کیفیت هشدار و گزارش خودکار اصلاح.
16) ضد الگوهای
Liveness «ناخن» روند با توجه به وابستگی به زمان → flapping.
Retray without timeouts/jitter → طوفان درخواست ها.
HPA توسط CPU با خدمات وابسته به IO → «هیچ جا».
کش مشترک بدون نسخه در طول رول بک → فساد داده ها.
اقدامات خودکار بدون URL حسابرسی/Runbook.
بدون معیارهای DLQ/تاخیر → انباشت بدهی آرام.
مخلوط کردن خودکار بهبود و «پنهان کردن مشکلات»: اتوماسیون علائم را بهبود می بخشد، ریشه حذف نمی شود → تکرار حوادث.
خلاصه
خود شفا یک رشته مهندسی است: نمونه های با کیفیت بالا و محدودیت ها، retrays صالح و انزوا، اقدامات خودکار بر روی سیگنال های SLO، به علاوه بررسی هرج و مرج و ممیزی. این کانتور باعث می شود پلت فرم مقاوم در برابر سقوط، کاهش MTTR و صرفه جویی در معیارهای کلیدی iGaming - p99، تبدیل پرداخت و TTW - حتی در طول داغترین ساعت ها.