GH GambleHub

عملیات و → وابستگی های خدمات مدیریت

وابستگی های سرویس

1) چرا شما به آن نیاز دارید

هر پلتفرم تولیدی یک شمارش است: کاربران → Edge/API → خدمات دامنه → نوبت/جریان → DB/caches → ارائه دهندگان خارجی (پرداخت، KYC، ارائه دهندگان بازی ها). خطا در یک لبه نمودار اغلب «در سراسر شبکه» راه می رود: تاخیر رشد می کند، بازپرداخت ها باعث می شود، صف ها مسدود می شوند، شکست های آبشار رخ می دهد. مدیریت وابستگی «شعاع انفجار» را کاهش می دهد و انتشار را قابل پیش بینی می کند.

اهداف:
  • نمودار کامل تماسها را ببینید و بفهمید چه کسی به چه کسی وابسته است.
  • جلوگیری از شکست آبشار و «طوفان retray».
  • برنامه ریزی انتشار بر اساس سازگاری و ارتقاء SLO.
  • بالا بردن MTTR: پیدا کردن علت ریشه واقعی سریعتر.

2) انواع وابستگی

همزمان (RPC: REST/gRPC/GraphQL): اتصال سخت با تاخیر/در دسترس بودن. ما نیاز به وقفه، قطع کننده، بودجه retray.
Asynchronous (Event/Stream: Kafka/Rabbit/Pulsar): اتصال پایدارتر است، اما معنای تاخیر/عقب ماندگی و تحویل (حداقل یک بار، idempointency) وجود دارد.
ذخیره سازی (DB/Cache/Object Store): منابع مشترک → محتوا، محدودیت اتصال/IOPS، اخراج، تکرار.
ارائه دهندگان خارجی (PSP/KYC/ارائه دهندگان بازی): سهمیه ها، تماس های تلفنی، پنجره های خدمات، SLA های قانونی.
عامل (انتشار، phicheflags، پیکربندی): وابستگی های غیر مستقیم از طریق تنظیمات، اسرار، رجیستری طرح.

3) کاتالوگ خدمات و نمودارهای وابستگی

چه چیزی را در دایرکتوری ثابت می کنیم (Backstage/Service Catalog/CMDB):
  • صاحبان (تیم ملی/چت/در تماس با rota)، مخزن، محیط زیست، مصنوعات.
  • قراردادهای API (OpenAPI/AsyncAPI)، نسخه ها، سازگاری (عقب/جلو).
  • وابستگی های ورودی/خروجی (بالادست/پایین دست) با نوع (همگام/async)، بحرانی، انتظارات SLO.
  • بودجه وقفه/عقب نشینی، قطع کننده ها، استخرهای سرپوشیده.
  • اطلاعات در مورد سهمیه ها و محدودیت های ادغام خارجی.
کارت نمونه کوچک:
  • 'خدمات: پرداخت-نرم افزار'
  • Upstream: 'پروفایل کاربر' (همگام سازی)، 'نمره ریسک' (async).
  • پایین دست: PSP-X (همگام سازی، квота 2k RPS)، «دفتر کل» (async).
  • SLO: p99 ≤ 300ms، 99. 9% آپتایم
  • مدت زمان: 200 میلی ثانیه به «PSP-X»، 150 میلی ثانیه به «مشخصات کاربر».
  • Retrai: 2 با تاخیر نمایی، لرزش.
  • Breaker: برای 30 ثانیه با 5٪ خطا/10 ثانیه باز می شود.

4) تبلیغات SLO و «بودجه تاخیر»

با زنجیره ای از تماس های همزمان، SLO کل از مجموع احتمال تاخیر و شکست تشکیل شده است.

اصول:
  • بودجه درخواست از بالا به پایین تقسیم می شود: SLO front-end 500 ms → Edge 50 ms → API 150 ms → خدمات دامنه 200 ms → ارائه دهنده 100 ms.
  • وقفه «خارج از کوتاه تر از در»: تماس گیرنده دارای یک وقفه کمتر از کل وقفه داخلی به طوری که منابع به روز شده، و تماس زامبی انباشته نمی شوند.
  • Retrai فقط برای کدهای امن/استثنا و با jitter; بدون بازپرداخت برای زمانبندی تنگنا (با نام مستعار «طوفان»).

5) قراردادها و قابلیت همکاری

نسخه API: SemVer برای قراردادها ؛ تغییرات سازگار با عقب از طریق زمینه های «اختیاری»، پسوند طرح ؛ حذف - تنها از طریق «دوره استهلاک».
قراردادهای مبتنی بر مصرف کننده (CDC): تست های مصرف کننده (Pact-like) در برابر ارائه دهنده در CI اجرا می شود ؛ آزادی مسدود شده است اگر ناسازگار است.
Register schema (Async): نسخه موضوعات/رویدادها، تکامل طرحها (Avro/JSON-Schema)، can-read-old/can-write-new policy.

6) الگوهای پایداری مهندسی

وقفه ها: جدا کردن SLA های کسب و کار از انتظارات فنی ؛ هر اتصال خروجی یک وقفه صریح است.
Retries + backoff + jitter: بیش از 2-3 تلاش، با توجه به idemotence.

قطع کننده مدار: «افت سریع» در تخریب پایین دست ؛ محاکمه نیمه باز

Bulkhead (جداسازی استخر): برای downstreams مختلف - استخر جداگانه از جریان/طبقه/اتصالات.
Rate-limit/Leaky-bucket: به طوری که برای کشتن downstreams در قله.
Idempotency و deduplication: درخواست/پیام سطح idemotency کلید ؛ پدر بزرگ لیتر و عقب نشینی صف.
Caching و follbacks: کش های محلی/توزیع شده، وضعیت های stale-while-revalidate، تخریب محتوا.

شبه پیکربندی (ایده):

outbound:
psp-x:
timeout_ms: 200 retries: 2 retry_on: [5xx, connect_error]
backoff: exponential jitter: true circuit_breaker:
error_rate_threshold: 0. 05 window_s: 10 open_s: 30 pool: dedicated-psp (max_conns: 200)

7) قابل مشاهده بودن وابستگی ها

ردیابی توزیع شده (TraceID، Baggage): مسیر درخواست را از طریق لینک مشاهده کنید ؛ به تماس های خروجی با "برچسب های همکار می پردازد. سرویس '،' تلاش مجدد '،' timeout '.
Метрики به ازای هر وابستگی: 'outbound _ latency _ p99', 'outbound _ error _ rate', 'open _ circuit', 'retry _ count', 'queue _ lag'.

داشبورد بالادست/پایین دست:
  • SLO و لبه اشتباه رنگ کد نقشه خدمات.
  • «Top N problem dependencies» برای هفته گذشته.
  • «شعاع انفجار» - لیستی از خدمات است که تحت تاثیر سقوط X.
  • سیاهههای مربوط به همبستگی: شامل 'trace _ id '/' span _ id' در سیاهههای مربوط.

8) مدیریت انتشار وابستگی آگاهانه

خطوط لوله وابستگی آگاه: انتشار ارائه دهنده مسدود شده است اگر تست CDC مصرف کننده قرمز هستند.
گنجاندن تدریجی (phicheflags): زمینه های جدید/endoints → برای 1٪ از مصرف کنندگان → 10٪ → 100٪.
Canary releases: ما وابستگیهای کلیدی و «بودجه تأخیر» را بر اساس سهم ترافیک بررسی میکنیم.
سازگاری طرح ها: تولید کننده می نویسد «vNew»، مصرف کنندگان به عنوان خوانده شده «vOld/vNew» ؛ پس از انتقال - «جمع آوری زباله» از زمینه های قدیمی.

9) حوادث و تشدید توسط ستون

ما «مقصر واقعی» را تعریف می کنیم: هشدار-همبستگی - اگر «PSP-X» تخریب شده باشد، ما کل «بوش پرداخت» را نمی بینیم، بلکه صاحب ادغام است.
تخریب خودکار: phicheflag «حالت حداقل» (endpoints کمتر سنگین، بسته نرم افزاری کمرنگ، غیر فعال کردن ویژگی های غیر بحرانی).
گارد از آبشار: محدود کردن موازی، خاموش کردن retras در یک شاخه داغ، باز کردن شکن در پیش (قبل از باز).

قالب کتاب اجرا:
  • تشخیص: چه داشبورد/متریک، چگونه برای بررسی سهمیه/محدودیت.
  • اقدامات: کاهش RPS، تغییر به یک ارائه دهنده پشتیبان، به طور موقت پاسخ های حافظه پنهان را فعال کنید.
  • Rollback and validation: پارامترهای بازگشت، اطمینان حاصل کنید که هنجار p95/p99 و میزان خطا است.

10) ماتریس بحرانی وابستگی

هر پیوند را در امتداد محورها ارزیابی کنید:
زن و شوهرتایپ کنیدانتقاد (GGR/SLA)کار در اطرافسهمیه ها/محدودیت هامالک اصلی
«API → پرداخت»همگام سازیبالاسپرده آفلاین جزئی2K RPSتیم ملی پرداخت
«پرداخت → PSP-X»همگام سازیانتقادی استPSP-U/حافظه پنهان رمز1. 5K RPSادغام ها
«مشکلات → ریسک»آسینکبه طور متوسطتنزل به پیش فرضریسک پذیری
قوانین و مقررات:
  • برای «بحرانی» - تهیه دوگانه، قطع کننده ها، استخر های فردی، آزمون های هرج و مرج.
  • برای «بالا» - حداقل تخریب و «دکمه سبز» برای خاموش کردن ویژگی.
  • برای «متوسط/پایین» - محدودیت retray و بودجه صف.

11) فرآیند: از موجودی تا عملیات

1. نقشه برداری نمودار: جمع آوری تماس های واقعی (آثار) + وابستگی های اعلانی از دایرکتوری.
2. صاحبان اختصاص: برای هر سرویس و ادغام خارجی - مسئول در تماس.
3. SLO ها و بودجه ها را تعریف کنید: تاخیر/خطا، زمان بندی/بازپرداخت/استخر.
4. قراردادهای رسمی: OpenAPI/AsyncAPI، Schemas و CDC.
5. فعال کردن الگوهای ثبات: timeouts/retries/circuit/bulkhead.
6. پیکربندی داشبورد و هشدار در هر وابستگی.
7. نصب گیت های انتشار: توسط CDC/compatibility/canary مسدود شده است.
8. روزهای بازی منظم: آزمایش هرج و مرج در لبه های کلیدی سقوط.
9. پس از مرگ با تمرکز بر ارتباطات: چه چیزی آبشار را تقویت کرد، چگونه شعاع را محدود کرد.

12) هشدارها در مورد اعتیاد (ایده های قانون)

Downstreams همزمان:
  • ' outbound _ error _ rate {to =» X»}> 3% FOR 10m' → هشدار; '> 5% FOR 5m' → بحرانی.
  • ' outbound _ p99 _ latency {به =» X»}> SLO1. 3 برای 10 متر → هشدار.
قطع کننده مدار:
  • ' circuit _ open {to =» X «} = = 1 FOR 1m '→ صفحه به مالک ادغام.
بازخوانی:
  • ' retry _ rate {to =» X «}> baseline2 FOR 5m '+ 'outbound _ rps> 0' → خطر طوفان.
آسینک:
  • ' consumer _ lag {topic =» Y»} growth> threshold FOR 10m' + 'hpa at max' → крит.
سهمیه های خارجی:
  • ' usage _ quota {provider =» PSP-X «}> 90% window '→ هشدار، مسیرهای سوئیچ خودکار.

13) ضد الگوهای

"یک استخر جریان مشترک برای همه downstreams. "مجموع: سر از خط مسدود کردن. استخرها رو تقسيم کن.
بدون وقفه/با بازپرداخت بی پایان. طوفان متولد شد.
Retrays کور از جراحی های غیر idemotent. تکراری نوشتن آف/شرط.

«DB مشترک» پنهان به عنوان نقطه اتصال. رقابت شدید و موانع

نسخه API بدون CDC تغییر می کند و برنامه را از بین می برد. سقوط دسته جمعی.
قابل مشاهده بودن فقط از طریق خدمات، نه از طریق اتصالات. جایی که زنجیر پاره می شود قابل مشاهده نیست.

14) داشبورد: حداقل مجموعه

Service Map: یک نقشه تعاملی از خدمات با معیارهای لبه (تاخیر/خطا/حجم).
Upstream/Downstream Overview: برای صاحب سرویس - وابستگی های ورودی (چه کسی تماس می گیرد)، خروجی (چه کسی تماس می گیرد)، «مشکلات بالا».
Drilldown وابستگی: پیوند کارت خاص: p50/p95/p99، خطاهای کلاس، درصد شکن باز، retrays، استخر اتصال، سهمیه/هزینه.
Release Context: حاشیه نویسی از releases/phicheflags در نمودارهای وابستگی.

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

  • دایرکتوری خدمات با صاحبان و قراردادها (OpenAPI/AsyncAPI).
  • نمودار کامل وابستگی از ردیابی (به روز رسانی روزانه).
  • SLO توسط سرویس و «بودجه تاخیر» پایین زنجیره.
  • صریح وقفه، عقب نشینی jitter، قطع کننده، انزوا دیوار.
  • تست CDC در CI به عنوان یک دروازه آزاد است.
  • داشبورد در هر وابستگی و کارت خدمات.
  • هشدارها در لبه + سرکوب توسط علت ریشه.
  • بازی روز: ارائه دهنده/خوشه/افت موضوع و بررسی تخریب.
  • برنامه تخریب: کدام ویژگی ها را خاموش می کنیم، کدام انبارها را روشن می کنیم.
  • پس از مرگ به طور منظم با اقدامات برای کاهش اتصال.

16) KPI های کیفیت مدیریت وابستگی

وابستگی MTTR: بهبود متوسط دنده.
شاخص شعاع انفجار (Blast Radius Index): میانگین تعداد سرویسهایی که تحت تاثیر قرار میگیرند.

نمره اتصال: نسبت وابستگی همگام سازی در میان همه ؛ روند رو به پایین

CDC Pass Rate: درصد انتشار بدون نقض قرارداد

سعی کنید طوفان/هدف ماه → 0.
هزینه تماس های خارجی: هزینه تماس های خارجی در هر 1K RPS (نگاه کنید به اثر ذخیره سازی/follbacks).

17) شروع سریع (پیش فرض)

زمانبندی: 70-80٪ از بودجه لینک ؛ درخواست اتمام وقت بالا <مجموع داخلی.
Retrai: حداکثر 2، فقط در 5xx/شبکه idempotent، با عقب نشینی + لرزش.
Breaker: آستانه 5٪ خطا در 10 ثانیه، باز = 30 ثانیه، نمونه های نیمه باز.
Bulkhead: استخر اختصاصی/محدودیت اتصال در هر پایین دست.
CDC: اجباری برای همه API ها و موضوعات عمومی.
Async-preference: در صورت امکان - تغییر به رویدادها/صف ها (جدا شدن در زمان).

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

س: کدام مهمتر است: عقب نشینی یا شکستن ؟

A: هر دو. صرفه جویی در شکست های کوتاه مدت، شکن از تخریب دائمی و طوفان محافظت می کند.

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

A: همبستگی خطای بالا، حاشیه زمان کم، بازپرداخت مکرر، بدون follbacks/caches، زنجیره های طولانی همزمان.

س: چرا CDC اگر ما تست ادغام داشته باشیم ؟

پاسخ: CDC انتظارات مصرف کننده را ضبط می کند و در صورت عدم سازگاری - قبل از تولید کد، نسخه ارائه دهنده را می شکند.

Contact

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

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

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

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

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

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