← مقالات

هندسة الموثوقية

عندما تصبح إعادة المحاولة انقطاعًا

يمكن أن يتحول تباطؤ بسيط إلى فشل يشمل النظام كله عندما تحاول كل طبقة استعادة عملها بمفردها. نتتبع سلسلة الفشل والحدود التي يمكن أن توقفها.

MGCA group · تم النشر

مشهد خدمي بمنظور متساوي القياس، يتضمن مسار معالجة ضيقًا وخاضعًا للتحكم وتراكمًا أكبر للطلبات المنتظرة.
رسم توضيحي للهندسة المفاهيمية: قبول المزيد من العمل لا يؤدي إلى زيادة القدرة على المعالجة.
اتبع سلسلة الفشل
  1. 1. تأخير بسيط يكسب حياة ثانية
  2. 2. يحدث الضرب بين الفرق
  3. 3. غرف الانتظار لا تخلق القدرة الاستيعابية
  4. 4. قم ببناء حدود لا يمكن للحمل الزائد الاقتراض من خلالها
  5. 5. التراجع يغير التوقيت؛ غضب يغير الشركة
  6. 6. تحتاج حركة المرور إلى طريق العودة إلى المنزل
  7. 7. ابحث عن العمل الذي يتم إنجازه
  8. 8. النظام الذي يسمح له بالتوقف عن المحاولة

نية واحدة، وسبعة وعشرون محاولة محتملة

فتح البصرية بالحجم الكامل ↗
نية واحدة، وسبعة وعشرون محاولة محتملةأسوأ حالة تفرع توضيحية: ثلاث طبقات، تسمح كل منها بثلاث محاولات إجمالية بما في ذلك النسخة الأصلية. لا يوجد نجاح مبكر أو إلغاء؛ تعتمد حركة المرور الفعلية على التنفيذ. مناطق الحلقة ليست مقياسًا لعبء العمل.1
العملية الأصلية
3
طبقة إعادة المحاولة الأولىثلاث محاولات إجمالية في كل طبقة
9
طبقة إعادة المحاولة الثانيةمحاولات
27
أعمق التبعيةمحاولات
اجعل إعادة محاولة الملكية والبدل الإجمالي واضحين.نموذج توضيحي - بيانات إنتاج غير مقاسة
أسوأ حالة تفرع توضيحية: ثلاث طبقات، تسمح كل منها بثلاث محاولات إجمالية بما في ذلك النسخة الأصلية. لا يوجد نجاح مبكر أو إلغاء؛ تعتمد حركة المرور الفعلية على التنفيذ. مناطق الحلقة ليست مقياسًا لعبء العمل.
التفسير والافتراضات

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

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

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

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

1. تأخير بسيط يكسب حياة ثانية

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

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

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

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

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

تناقش إرشادات أمازون الهندسية المهلات والتراجع والارتعاش ومخاطر أن تؤدي المكالمة التي انتهت مهلتها بالفعل إلى حدوث آثار جانبية. تصف Microsoft النمط المضاد لإعادة المحاولة ذي الصلة: يمكن أن تمنع المحاولات المتكررة الخدمة المتعثرة من التعافي. تدعم هذه المصادر الآلية الواسعة، بدلاً من التحقق من صحة الأرقام المحددة في هذه المقالة. يطبق منطق التصميم التالي هذه الآلية على خدمة مبسطة بشكل متعمد بحيث تظل العواقب قابلة للفحص. [1] [2]

2. يحدث الضرب بين الفرق

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

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

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

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

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

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

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

المحاولة الفاشلة ليست تعليمات عمل جديدة

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

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

3. غرف الانتظار لا تخلق القدرة الاستيعابية

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

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

يمكن أن تتعافى السعة بينما يستمر تراكم الأعمال المتراكمة

فتح البصرية بالحجم الكامل ↗
يمكن أن تتعافى السعة بينما يستمر تراكم الأعمال المتراكمةنموذج الموائع المحسوبة بوحدات عمل متطابقة وبدون انتهاء الصلاحية. يتم الحفاظ على ثبات حركة المرور الإضافية لعزل تأثيرها؛ هذه ليست تنبؤات أو قياسات للأداء.02,4004,8007,2009,60012,000060120180240300360
العمل الأصلي فقط: 80 وحدة/ثانية
مع المحاولات الإضافية: 120 وحدة/ثانية
الوقت منذ بدء التباطؤ (بالثواني)
تعود القدرة في 120 ثانيةيتم مسح التراكم الأصلي فقط في 240 ثانية
وحدات العمل في قائمة الانتظار
نموذج الموائع المحسوبة بوحدات عمل متطابقة وبدون انتهاء الصلاحية. يتم الحفاظ على ثبات حركة المرور الإضافية لعزل تأثيرها؛ هذه ليست تنبؤات أو قياسات للأداء.
التفسير والافتراضات

السعة: 60 وحدة/ثانية لمدة 120 ثانية، ثم 100 وحدة/ثانية. التراكم الأولي: صفر. محاولات إضافية في حالة الحساسية: 40 وحدة/ثانية.

عرض بيانات الحساب ↗

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

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

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

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

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

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

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

4. قم ببناء حدود لا يمكن للحمل الزائد الاقتراض من خلالها

أربعة حدود مختلفة، خدمة واحدة

فتح البصرية بالحجم الكامل ↗
أربعة حدود مختلفة، خدمة واحدةعرض مفاهيمي متساوي القياس. تمثل الطبقات مسؤوليات التحكم، وليس المسافة المادية أو الإنتاجية أو هيكل منتج Azure المحدد. الهندسة ليست على نطاق واسع.04
التبعيةاحترام قدرتها؛ إطلاق أعمال الاسترداد بمعدل متحكم فيه.
03
التنفيذ النشطالحد من العمل التبعي الحقيقي على متن الطائرة، وليس فقط انتظار المتصلين.
02
انتظار العملتخزين ملزمة وعمر مفيد؛ فصل الطلب المباشر عن الإعادة.
01
القبولقبول أو رفض أو تأجيل بثمن بخس؛ الحفاظ على هوية العملية.
المخزن المؤقت الأكبر لا يجعل الطبقة السفلية أسرع.العمل المرفوض يحتاج إلى نتيجة واضحة.
عرض مفاهيمي متساوي القياس. تمثل الطبقات مسؤوليات التحكم، وليس المسافة المادية أو الإنتاجية أو هيكل منتج Azure المحدد. الهندسة ليست على نطاق واسع.
التفسير والافتراضات

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

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

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

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

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

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

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

تناقش معالجة Google للحمل الزائد الاستجابات المتدهورة والحاجة إلى رفض العمل عندما لا يمكن تقديم استجابة منخفضة. وهذا يوفر سياقًا مفيدًا لاختيار التصميم الذي يمكن أن يبدو انهزاميًا: فرفض بعض الطلبات يمكن أن يحمي القدرة على إكمال الطلبات الأخرى. ولا يختار أولويات العمل للخدمة الافتراضية. تتطلب هذه الأولويات عقدًا صريحًا حول المهام التي قد يتم تأجيلها، والتي قد تتدهور، والتي يجب أن تفشل بسرعة. تحتاج الآلية الفنية بعد ذلك إلى تنفيذ هذا العقد بدلاً من مجرد تسجيله في مستند. [5]

5. التراجع يغير التوقيت؛ غضب يغير الشركة

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

توضح مناقشة AWS حول التراجع الأسي والارتعاش لماذا يمكن لتوقيت إعادة المحاولة الحتمي أن يترك مجموعات من العمل. وهذا يدعم آلية التوقيت، وليس اختيار معلمة عالمية لخدمة أخرى. في التطبيق الافتراضي، قد يؤدي التأخير العشوائي الأطول إلى توزيع المحاولات ولكنه يدفع بعضها أيضًا إلى ما بعد الموعد النهائي المفيد للمتصل. قد يكون النطاق الأقصر مناسبًا للموعد النهائي بينما لا يقوم إلا بالقليل جدًا لتقليل المزامنة. التصميم يحتاج إلى كلا القيود. لا ينبغي التعامل مع اسم الخوارزمية المختار كدليل على أن كل تأخير يتم إنشاؤه مناسب للمهمة. [6]

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

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

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

المتصل الذي يضغط على الزر مرة أخرى

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

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

6. تحتاج حركة المرور إلى طريق العودة إلى المنزل

تقدم الخدمة المعتمدة على قائمة الانتظار تمييزًا آخر: المعالجة الناجحة والإقرار الناجح هما حدثان منفصلان. قد يكتمل تأثير الأعمال قبل أن يعلم الوسيط أنه يمكن إزالة الرسالة. في حالة فقدان الإقرار، يمكن للنظام رؤية الرسالة مرة أخرى. تقوم Azure Service Bus بتوثيق عمليات النقل والأقفال والتسوية كأجزاء منفصلة من التسليم. والنتيجة المعمارية هي ربط هوية معالجة الرسالة بالعملية التجارية والتعامل مع التسليم المتكرر بشكل متعمد. لا تثبت زيادة حد عدد التسليم أن التنفيذ المتكرر آمن. [7]

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

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

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

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

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

7. ابحث عن العمل الذي يتم إنجازه

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

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

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

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

اختبار السلسلة، وليس فقط الحلقة

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

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

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

8. النظام الذي يسمح له بالتوقف عن المحاولة

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

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

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

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