دائرة العمليات وإدارة →
الاعتماد على الخدمات
1) لماذا تحتاجه
يتم احتساب أي منصة إنتاج: المستخدمون → Edge/API → خدمات النطاق → المنعطفات/التدفقات → DB/المخابئ → المزودين الخارجيين (المدفوعات، KYC، مزودي الألعاب). غالبًا ما يكون الخطأ على حافة واحدة من الرسم البياني «يمشي» في جميع أنحاء الشبكة: تنمو التأخيرات، ويتم تشغيل عمليات إعادة التصوير، ويتم انسداد قوائم الانتظار، وتحدث حالات فشل متتالية. تقلل إدارة التبعية من «نصف قطر الانفجار» وتجعل الإطلاقات قابلة للتنبؤ.
الأهداف:- انظر الرسم البياني الكامل للمكالمات وفهم من يعتمد على من.
- منع فشل السلسلة التعاقبية و «إعادة العاصفة».
- إصدارات الخطة على أساس التوافق والترويج لـ SLO.
- رفع MTTR: ابحث عن السبب الجذري الحقيقي بشكل أسرع.
2) أنواع التبعيات
Synchronous (RPC: REST/gRPC/GraphQL): اتصال صلب حسب زمن الوصول/التوافر. نحن بحاجة إلى مهلة، وكسر، وإعادة الميزانية.
غير متزامن (Event/Stream: Kafka/Rabbit/Pulsar): اتصال أكثر استقرارًا، ولكن هناك تأخر/تراكم ودلالات التسليم (مرة واحدة على الأقل، الغباء).
التخزين (DB/Cache/Object store): الموارد المشتركة → المحتوى، حدود الاتصال/IOPS، الإخلاء، التكرار.
مقدمو الخدمات الخارجيون (PSP/KYC/مزودو الألعاب): الحصص، ومكالمات الرسوم، ونوافذ الخدمة، واتفاقات SLA القانونية.
التشغيل (الإطلاقات، التجمعات، التكوينات): التبعيات غير المباشرة من خلال الإعدادات، الأسرار، سجل المخطط.
3) كتالوج الخدمة ورسوم بيانية للتبعية
ما نصلحه في الدليل (Backstage/Service Catalog/CMDB):- المالكون (Squad/chat/On-call rota)، الريبو، البيئة، القطع الأثرية.
- عقود API (OpenAPI/AsyncAPI)، الإصدارات، التوافق (للخلف/للأمام).
- التبعيات الوافدة/الخارجة (المنبع/المصب) مع النوع (المزامنة/الأسينك) والحرجية وتوقعات SLO.
- ميزانية المهلة/التراجع، القواطع، مجمعات الحواجز.
- بيانات عن الحصص وحدود التكامل الخارجي.
- «الخدمة: المدفوعات لكل منهما»
- المنبع: «ملف تعريف المستخدم» (مزامنة)، «درجة المخاطرة» (async).
- المصب: «PSP-X» (مزامنة، квота 2k RPS)، «دفتر الأستاذ» (async).
- SLO: p99 ≤ 300 ms، 99. 9٪ وقت التشغيل.
- المهلات: 200 مللي ثانية إلى «PSP-X»، و 150 مللي ثانية إلى «ملف تعريف المستخدم».
- Retrai: 2 مع تأخير أسي، jitter.
- الكسر: مفتوح للثلاثينيات بنسبة 5٪ أخطاء/10 ثوانٍ.
4) دعاية SLO و «ميزانية زمن الوصول»
مع سلسلة من المكالمات المتزامنة، يتم تشكيل إجمالي SLO من مجموع التأخيرات واحتمالات الفشل.
المبادئ:- يتم تقسيم ميزانية الطلب من الأعلى إلى الأسفل: الواجهة الأمامية SLO 500 ms → Edge 50 ms → API 150 mm → خدمات المجال 200 ms → المزود 100 mm.
- المهلات «أقصر من الداخل»: المتصل لديه مهلة أقل من إجمالي المهلة الداخلية بحيث يتم تحديث الموارد، وعدم تراكم مكالمات الزومبي.
- Retrai فقط للرموز/الاستثناءات المأمونة ومع jitter ؛ لا توجد عوائد لمهل عنق الزجاجة (المعروف أيضًا باسم «العاصفة»).
5) العقود وقابلية التشغيل البيني
إصدار API: SemVer للعقود ؛ التغييرات المتوافقة مع الماضي من خلال المجالات «الاختيارية»، وتمديدات المخطط ؛ - فقط من خلال «فترة الاستنكار».
العقود التي يحركها المستهلك (CDC): تجرى اختبارات المستهلك (مثل الميثاق) ضد المزود في CI ؛ يتم حظر الإفراج إذا كان غير متوافق.
مخطط التسجيل (Async): نسخة من المواضيع/الأحداث، تطور المخططات (Avro/JSON-Schema)، سياسة قديمة/يمكن كتابتها.
6) أنماط الاستقرار الهندسية
المهل الزمنية: الفصل بين اتفاقات القطاع الخاص التجارية والتوقعات التقنية ؛ كل اتصال صادر هو مهلة واضحة.
Retries + backoff + jitter: ما لا يزيد عن 2-3 محاولات، بالنظر إلى الغباء.
قاطع الدائرة: «هبوط سريع» في تحلل المصب ؛ نصف محاكمة مفتوحة.
Bulkhead (عزل المسبح): لمختلف المصبات - برك منفصلة من التيارات/الطوابق/الوصلات.
حد السعر/دلو التسرب: حتى لا تقتل المصب في القمم.
الخصوصية والتفريغ: مفتاح الخصوصية على مستوى الطلب/الرسالة ؛ الجد ليتر والتراجع في قائمة الانتظار.
التخزين المؤقت والحماقات: المخابئ المحلية/الموزعة، والحالات التي لا معنى لها، وتدهور المحتوى.
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, Paggage): انظر مسار الطلب بالوصلات ؛ يمتد إلى المكالمات الصادرة مع علامات الأقران. ',' retry ',' timeout'.
Метрики لكل تبعية: 'outbound _ latency _ p99', 'outbound _ error _ rate', 'open _ circuit',' retry _ count', 'quelue _ lag'.
- SLO وخريطة خدمة مرمزة بألوان الحافة الخاطئة.
- «تبعيات مشكلة Top N» للأسبوع الماضي.
- «نصف قطر الانفجار» - قائمة الخدمات التي ستتأثر بسقوط X.
- سجلات الارتباط: تشمل «تتبع - معرف »/« امتداد - معرف» في السجلات.
8) إدارة الإفراج عن التبعية
خطوط الأنابيب المدركة للتبعية: يتم حظر إصدار المزود إذا كانت اختبارات مركز السيطرة على الأمراض للمستهلكين حمراء.
الإدماج التدريجي (phicheflags): → مجالات/مداخل جديدة لـ 1٪ من المستهلكين → 10٪ → 100٪.
إصدارات الكناري: نتحقق من التبعيات الرئيسية و «ميزانية الكمون» على حصة حركة المرور.
توافق المخططات: يكتب المنتج «vNew»، ويقرأ المستهلكون «vOld/vNew» ؛ بعد الانتقال - «جمع القمامة» من الحقول القديمة.
9) الحوادث والتصعيد حسب العمود
نحن نحدد «الجاني الحقيقي»: علاقة التنبيه - إذا تدهورت «PSP-X»، فإننا لا نصدر «شجيرة الدفع» بأكملها، ولكن مالك التكامل.
التحلل التلقائي: phicheflag «الوضع الأدنى» (نقاط نهاية أقل ثقلاً، حزم مشذبة، تعطيل الميزات غير الحرجة).
الحراسة من السلاسل التعاقبية: الحد من التوازي، وإيقاف تشغيل retras على فرع ساخن، وفتح الكاسر مسبقًا (مفتوح مسبقًا).
- التشخيص: ما هي لوحات المعلومات/المقاييس، وكيفية التحقق من الحصص/الحدود.
- الإجراءات: تقليل RPS، والتبديل إلى مزود النسخ الاحتياطي، وتمكين استجابات ذاكرة التخزين المؤقت مؤقتًا.
- التراجع والتحقق: معلمات الإرجاع، تأكد من أن القاعدة هي p95/p99 ومعدل الخطأ.
10) مصفوفة حرجية التبعية
قم بتقييم كل رابط على طول المحاور: القواعد:- بالنسبة «الحرجة» - التزويد المزدوج، والكسر، والبرك الفردية، واختبارات الفوضى.
- لـ «عالية» - على الأقل التدهور و «الزر الأخضر» لإيقاف تشغيل الميزة.
- للحصول على «متوسط/منخفض» - حدود إعادة الدفع وميزانية قائمة الانتظار.
11) العملية: من المخزون إلى التشغيل
1. رسم خرائط الرسم البياني: جمع المكالمات الفعلية (الآثار) + التبعيات التصريحية من الدليل.
2. تعيين المالكين: لكل خدمة وتكامل خارجي - مسؤول عند الطلب.
3. :: تحديد المنظمات غير الحكومية والميزانيات: زمن الانتقال/الأخطاء، والمهل الزمنية/عمليات إعادة التدوير/المجمعات.
4. إضفاء الطابع الرسمي على العقود: OpenAPI/AsyncAPI والمخططات ومركز السيطرة على الأمراض.
5. تمكين أنماط الاستقرار: المهلة/الإعادة/الدائرة/الحاجز.
6. قم بتهيئة لوحات القيادة والتنبيهات لكل اعتماد.
7. تثبيت بوابات الإصدار: كتلة بواسطة CDC/التوافق/الكناري.
8. أيام اللعب العادية: تجارب الفوضى على الحواف الرئيسية المتساقطة.
9. تشريح الجثة مع التركيز على الاتصال: ما الذي عزز السلسلة التعاقبية، وكيفية تضييق نصف القطر.
12) تنبيهات حول الإدمان (أفكار القواعد)
المصب المتزامن:- ' outbound _ error _ rate {to =» X»}> 3٪ لـ 10 م' تحذير → ؛ '> 5٪ لـ 5 م' → حرجة.
- ' outbound _ p99 _ latency {to =» X»}> SLO1. 3 لتحذير 10 م →.
- ' circuit _ open {to =» X «= = 1 FOR 1m '→ page to the integration owner.
- ' retry _ rate {to =» X «}> baseline2 FOR 5m '+ 'outbound _ rps> 0' → خطر العاصفة.
- ' consumer _ lag {topic =» Y»} النمو> العتبة لـ 10 م +' hpa at max '→ крит.
- ' usage _ qua {provider =» PSP-X «> 90٪ نافذة 'تحذير →، طرق التبديل التلقائي.
13) الأنماط المضادة
"تجمع واحد مشترك لجميع المصبات. "المجموع: حجب رأس الخط. تقسيم البرك.
لا مهلات/مع استرجاعات لا نهاية لها. لذلك ولدت عاصفة.
إعادة طباعة عمياء للعمليات الجراحية غير الحمقاء. تكرار الشطب/الرهانات.
مخفي «DB مشترك» كنقطة اتصال. منافسة قوية وعقبات.
يتغير إصدار API بدون CDC وخطة الاستخفاف. تسقط الكتلة.
القابلية للمراقبة فقط عن طريق الخدمات وليس عن طريق الاتصالات. لا يمكن رؤية مكان انقطاع السلسلة.
14) لوحات القيادة: الحد الأدنى
خريطة الخدمة: خريطة تفاعلية للخدمات مع مقاييس الحافة (الكمون/الخطأ/الحجم).
نظرة عامة على المنبع/المصب: لمالك الخدمة - التبعيات الواردة (من يتصل)، الصادرة (من يتصل)، «أهم المشاكل».
التبعية Drilldown: رابط بطاقة محددة: p50/p95/p99، أخطاء الفئة، نسبة القواطع المفتوحة، إعادة التدوير، تجمع الاتصال، الحصص/التكلفة.
سياق الإصدار: شروح الإصدارات/الفروقات على الرسوم البيانية للتبعية.
15) قائمة التنفيذ المرجعية
- دليل الخدمات مع المالكين والعقود (OpenAPI/AsyncAPI).
- الرسم البياني الكامل للتبعيات من الآثار (تحديث يومي).
- SLO حسب الخدمة و «ميزانيات الكمون» أسفل السلسلة.
- مهلة صريحة، تراجعات نفضية، قواطع، عزلة الحاجز.
- اختبارات CDC في CI كبوابة إطلاق.
- لوحات القيادة لكل بطاقة تبعية وخدمة.
- تنبيهات على الحواف + الكبت حسب السبب الجذري.
- أيام اللعبة: فحص المزود/المجموعة/الموضوع والإسقاط والتحلل.
- خطة التدهور: التي تتميز بإيقاف تشغيلها، والتي نقوم بتشغيلها.
- تشريح الجثة بانتظام مع إجراءات لتقليل الاتصال.
16) مؤشرات جودة إدارة الإعالة
التبعية MTTR: متوسط استرداد الضلوع.
مؤشر نصف القطر: متوسط عدد الخدمات المتأثرة عند سقوط واحد.
درجة الاقتران: نسبة التبعيات المتزامنة بين الجميع ؛ الاتجاه النزولي.
معدل نجاح CDC:٪ من الإصدارات دون مخالفات العقد.
إعادة تجربة العواصف/هدف الشهر → 0.
تكلفة المكالمات الخارجية: تكلفة المكالمات الخارجية لكل 1k RPS (انظر تأثير التخزين المؤقت/follbacks).
17) البداية السريعة (التخلف عن السداد)
المهلة: 70-80٪ من ميزانية الرابط ؛ طلب المهلة العليا <مجموع داخلي.
Retrai: max 2، فقط على 5xx/network الخادع، مع backoff + jitter.
الكسر: عتبة 5٪ أخطاء في 10 ثوانٍ، مفتوحة = 30 ثانية، عينات نصف مفتوحة.
Bulkhead: أحواض السباحة/حدود الاتصال المخصصة لكل مصب.
مركز السيطرة على الأمراض: إلزامي لجميع واجهات برمجة التطبيقات العامة والمواضيع.
تفضيل Async: حيثما أمكن - التحول إلى الأحداث/قوائم الانتظار (الفصل في الوقت المناسب).
18) الأسئلة الشائعة
س: ما هو الأهم: تراجع أم كسر ؟
ج: كلاهما. Retrai ينقذ من الإخفاقات قصيرة المدى، والكسر يحمي من التدهور الدائم والعواصف.
س: كيف تعرف أن الاتصال «هش للغاية» ؟
ج: ارتباط خطأ مرتفع، هامش مهلة منخفض، إعادة مسارات متكررة، عدم وجود مخابئ/مخابئ، سلاسل طويلة متزامنة.
س: لماذا مركز السيطرة على الأمراض إذا كان لدينا اختبارات التكامل ؟
ج: يلتقط مركز السيطرة على الأمراض توقعات المستهلكين ويكسر إصدار المزود عندما يكون غير متوافق - قبل أن يبدأ إنتاج الكود.