GH GambleHub

مهندسی هرج و مرج

1) اصول اساسی

حالت پایدار به عنوان فرضیه اصلی. به وضوح هنجار را تعریف کنید (به عنوان مثال: p95 <200 ms، نرخ خطا <0. 3٪، موفقیت جریان بحرانی> 99. 5%).
متغيرهاي جدا شده تغییر تا آنجا که ممکن است یک عامل در یک زمان به علت اثر لینک و بهبود.
درجه. ما با دامنه های کوچک در یک محیط امن شروع می کنیم و پوشش و شدت را گسترش می دهیم.
گاردریل ها شرایط توقف صریح در بودجه SLO/هشدار/خطا.
تکرارپذیری. آزمایش باید به طور قطعی قابل تکرار باشد (اسکریپت/مانیفست/IaC).
اخلاق و امنیت بدون اطلاعات شخصی واقعی و معاملات مالی در آزمایش های خطرناک.

2) «حالت پایدار» چیست ؟

حالت پایدار مجموعه ای از معیارهای قابل مشاهده است که ارزش کاربر و متغیرهای تجاری را توصیف می کند:
  • P50/P95/P99 تاخیر از نقاط پایانی کلیدی.
  • نرخ موفقیت و تبدیل مسیر بحرانی.
  • نرخ خطا، زمانبندی، درصد درخواستهای «shed» (کوتاه شده در اشباع).
  • میزان خود بهبودی (MTTR)، مقاومت در برابر عقب نشینی (بدون طوفان).
  • ناورداهای دامنه: فقدان «منفی در تعادل»، پرداخت های یک بار اجرا شده، سازگاری روزهای گزارش و غیره

3) کاتالوگ تزریق (آنچه ما شکستن)

شبکه: تاخیر، لرزش، از دست دادن/تکراری، محدودیت پهنای باند، TLS breaks، DNS flapping.
محاسبات: اضافه بار CPU، حافظه/فشار GC، خستگی توصیف کننده، انحراف ساعت.
ذخیره سازی: بالا P95 I/O، ENOSPC، رهبر/شکست ماکت، تقسیم مغز، طولانی fsync.
وابستگی: 5xx/429، «موفقیت آهسته»، تخریب API های خارجی، محدودیت نرخ.
داده ها: تکراری/از دست رفته از پیام ها، خارج از ترتیب، پرونده های کثیف، درگیری نسخه.
عملیات: انتشار ناموفق/پیکربندی، پرچم ویژگی با اشکال، گواهی منقضی شده، چرخش کلید.
افراد و فرآیندها: در دسترس نبودن افراد مسئول، تاخیر در به روز رسانی دستی، runbook نادرست.

4) طراحی آزمایش (قالب)

1. فرضیه: «در + 300 ms به سرویس ارز p99 از API اصلی <450 ms، یک شکن باز می شود، پاسخ دائمی ≤ 15 دقیقه پیش داده می شود».
2. تزریق: مشخصات شکست (نوع/دامنه/مدت زمان) و کانتور هدف.
3. برچسب های متریک/ورود به سیستم: marking 'chaos. experiment_id' 'phase = inject' recover 'را انتخاب کنید.
4. Guardrails: لغو در 'error _ rate> 2٪' یا p99> SLA × 2 برای بیش از 1 دقیقه.
5. نتایج/خروجی: لیستی از مشاهدات، اشکالات، بهبود، برنامه کاری و اجرای مجدد.

5) قابلیت مشاهده: آنچه اجباری است

ردیابی: درخواست مسیر از طریق وابستگی ؛ بخش هایی با تخریب مشخص شده اند.
معیارهای منابع: CPU, هیپ/GC, FD, دیسک IOPS/لات, پهنای باند شبکه, عمق صف.
معیارهای کسب و کار: تبدیل/موفقیت عملیات، سهم معاملات جبران شده.
سیاهههای مربوط به رویداد: باز کردن/بستن قطع کننده, retrays و بودجه خود را, تعویض رهبر پایگاه داده.
پانل آزمایش: داشبورد زنده با آستانه guardrails و سقط جنین «دکمه قرمز».

6) گارد محافظ و امنیت

فنی: محدودیت های بالای نرخ خطا/تاخیر، کاهش سهم عملیات موفق، رشد DLQ.
سازمانی: پنجره زمان، در تماس درگیر، اصل «یک منطقه - یک آزمایش».
داده ها/انطباق: فقط کیت های مصنوعی یا غیر شخصی ؛ ممنوعیت تست هایی که منجر به نقض قوانین می شوند.
برگشت: آماده برگشت/غیر فعال کردن روش پرچم/نرم ترافیک تخلیه.

7) الگوهای انعطاف پذیری که باید نشان دهند

بودجه اتمام وقت و عقب نشینی jitter (بدون طوفان).
قطع کننده مدار با بازیابی نیمه باز و نمایشی.
Bulkheads: انزوا از استخر بحرانی (پرداخت در مقابل تحلیلگر).
فشار پشتی و محدودیت نرخ: قطع اولویت پایین قابل پیش بینی.
کش با coalescing، حفاظت در برابر «طوفان گرم کردن».
Idempotence عوارض جانبی و sagas با اقدامات جبرانی.
Quorums، feilover، و ضد آنتروپی برای بازیابی اطلاعات.

8) سناریوهای نمونه (طرح)

8. 1 وابستگی آهسته (YAML)

yaml experiment: slow-downstream target: svc:api inject:
dependency:
name: currency mode: add_latency p95_ms: 300 duration: 10m guardrails:
error_rate: "< 1. 5%"
p99_latency: "< 450ms"
expectations:
breaker_open: true stale_data_served: "<= 15m"

8. 2 از دست دادن رهبر DB

تزریق: توقف رهبر/انتخاب مجدد اجباری.
انتظار: موقت نوشتن مهار، خواندن quorum، WAL/Outbox امن، خودکار بازگرداندن تکرار، بدون نوشتن دو.

8. 3 ENOSPC در دیسک ورودی

تزریق: دیسک را تا 95-100٪ پر کنید.
انتظار: چرخش اضطراری سیاهههای مربوط، ایمنی سیاهههای مربوط به بحرانی، غیر فعال کردن ویژگی های غیر بحرانی، هشدار و خودکار اصلاح.

8. 4 ترافیک پشت سر هم + سایه

تزریق: × 3 RPS به مدت 5 دقیقه در یک نقطه پایانی داغ.
انتظار: کاهش اولویت پایین، پایدار p95 «هسته»، بدون آبشار retray.

9) اتوماسیون در CI/CD

هرج و مرج دود در مرحله برای هر انتشار (تزریق کوتاه در دامنه امن).
شبانه اجرا می شود با توجه به کاتالوگ آزمایش (خدمات ماتریس × انواع شکست).
گیتس: انتشار مسدود شده است اگر «پایداری زیر آستانه است» (به عنوان مثال، درصد سقوط موفقیت آمیز <95٪).
مصنوعات: گزارش، مسیرهای پیاده روی، CPU/هیپ flameshraphs، عکس های فوری از معیارها و تنظیمات.

10) روزهای بازی (روزهای بازی)

تمرینات منظم تیم با سناریوهای «زنده»:
  • نقش ها: رهبر آزمایش، ناظر متریک، اپراتور عقبگرد، نماینده تجاری.
  • سناریوها: تخریب حافظه پنهان، شکست جزئی AZ/region-feilover، «انتشار بد»، عدم دسترسی یک ارائه دهنده خارجی.
  • نتایج: شکاف های موجود در کتاب اجرا، بهبود هشدارها، تعدیل SLO ها و بودجه های بازپرداخت.

11) هرج و مرج برای داده ها، رویدادها و ML

جریان داده ها: تست برای تکراری، شکاف، خارج از سفارش، تاخیر ؛ اعتبار سنجی مصرف کنندگان idemotent و استراتژی DLQ.
مخازن: شاخص تخریب، داغ پارتیشن، درگیری قفل، تکرار تحت تاخیر.
ML: تاخیر ویژگی، بازگشت به مدل پایه، کاهش کیفیت داده های ورودی (رانش) - سیستم باید «آرام آرام» و نه سقوط.

12) ضد الگوهای

هرج و مرج بدون مشاهده: شما «کور» هستید، نتیجه گیری ها نظری هستند.
تزریق بلافاصله در تولید بدون ریل مرحله و گارد.
«یک آزمایش بزرگ» در همه چیز در یک بار - مشخص نیست که دقیقا چه کار کرد.
اقدامات هرج و مرج اتفاقی بدون فرضیه و پس از رفع مجدد.
تمرکز تنها بر زیرساخت - کسب و کار ثابت فراموش شده است.
نادیده گرفتن افراد/فرایندها: هشدار، تماس، runbook - بخشی از سیستم.

13) بلوغ عمل (مدل)

1. Ad-hoc: تزریق تنها به صورت محلی.
2. هرج و مرج مرحله: کاتالوگ سناریوها، اجرای مکرر، داشبورد.
3. انتشار هرج و مرج: دود هرج و مرج در هر آزادی، دروازه، گزارش.
4. هرج و مرج مواد غذایی با محدودیت: ترافیک کم، گارد محافظ سخت، عقب نشینی آماده است.
5. ثبات مداوم: آزمایش خودکار، مدیریت SLO، بهبود به عنوان یک جریان کار.

14) ادغام با شیوه های معماری

تست مقاومت: آزمایش های هرج و مرج، تزریق گسل و سناریوهای تخریب را تکمیل می کنند.
تست بار: آزمایش ترکیبی بار + شکست نشان می دهد آبشار و طوفان از retraces.
سیاست به عنوان کد/RBAC/ABAC: گاردریل ها، مراحل برگشت و محدودیت ها به عنوان سیاست ها طراحی شده اند.
رضایت/مدیریت حریم خصوصی: اجازه نمی دهد آزمایش هایی که حالت پردازش داده ها را نقض می کنند.
Geo-architecture: هرج و مرج از شکست مناطق و اتصال داده ها به حوزه های قضایی.

15) دستور العمل های کوچک (شبه کد)

قطع کننده + تخریب


if breaker. open():
return serve_stale(cache. max_age=15m)
try:
res = call(dep, timeout=250ms)
return res except Timeout:
breaker. trip()
return serve_stale()

محدود کننده + سایه


if cpu. load() > 0. 85 or queue. depth() > HIGH:
if req. priority < HIGH: return 503_SHED limiter. acquire()

اثر جانبی بی نظیر


key = "payout:"+external_id if kv. exists(key): return kv. get(key)
res = side_effect()
kv. put(key, res, ttl=30d)
return res

16) چک لیست معمار

1. حالت ثابت و گاردریل تعریف شده ؟

2. آیا یک دایرکتوری اسکریپت (شبکه/CPU/ذخیره سازی/وابستگی ها/داده ها/عملیات) وجود دارد ؟

3. آیا مشاهدهپذیری منابع، دمهای تأخیر، ناورداهای تجاری را پوشش میدهد ؟

4. زمانبندی/عقب نشینی/قطع کننده/محدود کننده/bulkheads فعال و پارامتری ؟

5. کتاب اجرا آماده و «دکمه قرمز» ؟

6. آیا در صحنه و آزمایش های شبانه دود هرج و مرج وجود دارد ؟

7. آیا پنجره ها و نقش های «امن» برای روزهای بازی وجود دارد ؟

8. آزمایش تجدید پذیر هستند (IaC/اسکریپت)، نتایج versioned ؟

9. پیشرفت ها توسط وظایف ثابت می شوند، تست مجدد انجام می شود ؟

10. داده ها و خطوط لوله ML تحت پوشش، نه تنها HTTP ؟

نتیجه گیری

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

Contact

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

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

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

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

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

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