محتويات الدورة

RabbitMQ / المتقدم: الملكية المرتبة والإعادة المحتفظ بها وقبول التعافي / الدرس 18

تسلسلات الفشل وقبول التعافي

استخدام نوافذ تعطل وقواعد عمل صريحة لتحديد ما يثبته اختبار التعافي فعلاً.

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

أهداف الدرس

  • تمييز فحوص النماذج الخالصة من أدلة تكامل الوسيط والعميل.
  • تعريف الفقد المقبول وسلوك التكرار وزمن التعافي بصيغة قابلة للرصد.

البدء بفشل مسمى وقاعدة محددة

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

وضع عدم اليقين بين مراحل محددة

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

json تسلسل قبول نافذة تعطل اصطناعي
{"operation_id":"label-P17-v1","schedule":["deliver","apply-effect","connection-fails-before-ack-certainty","redeliver-same-operation"],"required_destination_result":"one-accepted-effect"}

تصف الخطوات فشلاً مفاهيمياً وقاعدة مطلوبة؛ ولا يقطع اتصال.

فحص الاكتمال الفريد مقابل التسليم المتكرر

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

python قاعدة اكتمال محلية لتسليم متكرر
deliveries = ['evt-a', 'evt-a', 'evt-b']
effect_ledger = {}
for operation_id in deliveries:
    effect_ledger.setdefault(operation_id, 'completed')
assert len(deliveries) == 3
assert set(effect_ledger) == {'evt-a', 'evt-b'}
print(len(deliveries), len(effect_ledger))
الناتج المتوقع
3 2

تقابل ثلاثة تسليمات هويتين محليتين؛ ولا يثبت القاموس المتطاير أثراً معاملياً دائماً.

إدراج التحقق في ساعة التعافي

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

الإبلاغ عن المنفذ والحدود غير المختبرة

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

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

وصف فحص مجموعة محلية باختبار تحول وسيط ناجح.

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

إعلان التعافي قبل مصالحة تغطية العمل الفريدة.

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

إغفال التعطل بعد أثر مكتمل من اختبار المحاولة.

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

اختبر فهمك

1. لماذا لا يثبت السجل المحلي حماية التكرار بعد استئناف العملية؟

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

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

2. هل يثبت تجاوز عطل عقدة التعافي من حذف كل الصفوف عرضاً؟

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

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

أهم ما تعلمته

  • يثبت اختبار التعافي قاعدة مسماة تحت تسلسل فشل معلن.
  • تحدد تغطية العمل وآثاره الآمنة من التكرار قبول التعافي.

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