محتويات الدورة
معمارية البرمجيات
الأساسيات: الوعود والبنية والملكية
التفاعلات: التوزيع والفشل والتشغيل
التطور: السعة والانتقال والتحقق والمراجعة

معمارية البرمجيات / التفاعلات: التوزيع والفشل والتشغيل / الدرس 10

احتوِ الفشل بالمواعيد النهائية والإعادة والعزل

اجمع ميزانية المستدعي وسياسة الفشل العابر وحالات القاطع ومجموعات الموارد دون تضخيم العطل.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • ميّز المهلة والموعد النهائي الشامل وميزانية الإعادة وقاطع الدائرة.
  • صمّم استجابة مخفضة تحافظ على وعد الحجز.

ابدأ بالوقت المتبقي للمستدعي

تحد المهلة انتظار محاولة واحدة، ويحد الموعد النهائي الزمن الكلي المفيد للعملية. إذا استهلكت الواجهة معظم ميزانية العميل، فقد يبدد اتصال طويل جديد الموارد بعد مغادرته. مرّر الوقت المتبقي أو إشارة إلغاء مكافئة عبر الواجهات الداعمة، واترك وقتا لتجميع الرد والتنظيف. لا تثبت المهلة توقف العملية البعيدة، لذا تحتاج الاستدعاءات المغيرة للحالة دلالات نتيجة وإعادة تراعي احتمال اكتمالها.

أعد فقط الفشل العابر المبرر

قد يزول عطل اتصال عابر، بينما لا تصلح الإعادة الفورية مدخلا خاطئا أو رفضا تجاريا غالبا. حدّد الشروط والمحاولات والتأخير المتدرج مع تنويع مناسب والموعد الكلي. أعد فقط عملية آمنة بالتكرار أو ذات بروتوكول هوية مثبت. تضاعف الإعادة في طبقات متعددة المرور؛ فقد يعيد المتصفح والبوابة والخدمة الطلب الفاشل نفسه. ضع الملكية في طبقة مقصودة وافحص المسار كله قبل السياسة.

python نموذج محلي لتضخيم الإعادة
attempts_per_layer = [3, 3, 2]
maximum_leaf_attempts = 1
for attempts in attempts_per_layer:
    maximum_leaf_attempts *= attempts
print(f"maximum_leaf_attempts={maximum_leaf_attempts}")
print("illustrative worst case, not a traffic measurement")
الناتج المتوقع
maximum_leaf_attempts=18
illustrative worst case, not a traffic measurement

إذا استنفدت كل محاولة أب جميع محاولات الابن فقد تتلقى النهاية ثمانية عشر استدعاء. يعتمد المرور الحقيقي على الفشل والسياسة؛ ولا يبدأ الحساب طلبا أو خدمة.

يتجنب القاطع تكرار استدعاء اعتمادية معطلة

يرصد القاطع فئة محددة من الفشل ويرفض الاستدعاءات مؤقتا عند شرط فتح. وتختبر محاولة محدودة أو حالة نصف مفتوحة التعافي لاحقا. يختلف عن الإعادة: تحاول الإعادة العملية، بينما يمنع القاطع المفتوح المحاولة عمدا. تحتاج العتبات والنوافذ وتوازي الاختبار إلى دليل خاص بالحمل. وقد يصنف رفض العمل عطلا للاعتمادية إذا أخطأ التصنيف. أظهر حالة القاطع وعدد الرفض لتمييز الحماية عن فشل غامض.

افصل الموارد قبل أن يستهلكها مسار بطيء

تحجز الحواجز مجموعات تواز أو اتصالات منفصلة لأحمال مختلفة الأهمية والاعتماديات. يجب ألا يستهلك بطء البريد كل ما يحتاجه عرض الحجوزات المؤكدة. السياسة التالية توضيحية وتتفادى أرقاما عامة. تحتاج كل مجموعة حدا وسياسة انتظار وإشارة تشبع. وقد تهدر كثرة المجموعات السعة أو تخلق اختناقات. قارن المهمة المحمية بكلفة الموارد المحجوزة، وتحقق من أن حدود القاعدة أو الخيوط المشتركة لا تبطل العزل الظاهر.

yaml سياسة عزل نوعية
reservation_queries:
  resources: dedicated bounded request pool
  on_saturation: explicit temporary failure
mail_delivery:
  resources: separate bounded worker pool
  on_saturation: retain durable pending work
policy_values: chosen from isolated measurements

للمسارين دلالتا إنجاز مختلفتان. هذه ملاحظة تصميم لا إعداد لبيئة معينة، ولا توصي بقيم سعة.

اجعل البديل صادقا بشأن حدوده

قد يكون الفهرس المخزن بديلا للقراءة إذا ظهرت حداثته وظلت أوامر الحجز تتحقق من المرجع. أما اختلاق تأكيد حجز فليس بديلا آمنا. حدّد الوظائف المتاحة والمعلومات المتقادمة ووقت انتهاء الوضع المخفض. اختبر فشل اعتمادية في بيئة معزولة وافحص تحرير الموارد والتكرار ونتائج العميل. ينفذ الدرس حسابا فقط، ولا يضبط قاطعا حقيقيا أو يحقن أعطالا إنتاجية أو يضمن التعافي.

الأخطاء الشائعة وإصلاحها

تجعل الإعادات العطل أكبر.

لماذا يحدث؟
تعيد طبقات متعددة دون موعد أو مالك مشترك.
كيف تصلحه؟
اختر مالك سياسة واحدا وحدد العدد والزمن الكليين.
كيف تتجنب تكراره؟
راجع أسوأ تضخيم عبر شجرة الاستدعاء.

تُفسر المهلة كدليل عدم تغير الحالة.

لماذا يحدث؟
اختلط الانتظار المحلي بالتنفيذ البعيد.
كيف تصلحه؟
استعلم عن النتيجة أو أعد بهوية ثابتة مدعومة.
كيف تتجنب تكراره؟
نمذج غموض ما بعد المهلة لكل كتابة.

يعيد البديل تأكيدا مختلقا.

لماذا يحدث؟
فُضلت الإتاحة دون حفظ الصحة.
كيف تصلحه؟
أعد حالة انتظار أو فشل صادقة مع إرشاد الاستعادة.
كيف تتجنب تكراره؟
راجع البديل وفق قيود العمل.

اختبر فهمك

1. هل يُحتسب نفاد السعة لفتح قاطع مزود البريد؟

اعرض الحل المشروح

لا. إنه نتيجة حجز تجارية لا تخص صحة البريد. صنّف الفشل عند حده وافتح القاطع لشروط الاعتمادية المحددة فقط. قد يمنع خلط الرفض عمليات سليمة ويخفي السبب الحقيقي.

2. تحتوي ميزانية عميل ثلاث ثوان استدعاءين متتابعين لكل منهما ثانيتان. ما الناقص؟

اعرض الحل المشروح

تتجاوز المهلات الميزانية قبل النفقات والإعادات. وزع الوقت المتبقي عمدا وأوقف بدء العمل بعد الموعد واترك وقت الرد. إذا لم يحقق المسار الوعد فأعد تصميمه أو غيّر الوعد صراحة. زيادة مهلة العميل اعتباطيا لا تثبت سلوكا مقبولا.

أهم ما تعلمته

  • حدّد الزمن والمحاولات والموارد معا.
  • يجب أن تحفظ آليات الحماية صدق نتائج العمل.

المراجع الرسمية