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

RabbitMQ / المتوسط: العمل المنسوخ وسلامة المحاولات وأدلة التشغيل / الدرس 10

النبضات والاتصالات والتعافي

كشف فشل النقل مع حفظ حدود حالة القناة ونتائج الرسائل غير المؤكدة أثناء التعافي.

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

أهداف الدرس

  • شرح تفاوض النبضات وموازنة الإنذارات الكاذبة.
  • فصل تعافي النقل والبنية ومصالحة الرسائل.

لا يثبت كائن TCP مفتوح سلامة الطرف

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

نمذجة قاعدة تفاوض العملاء الموثقة

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

python نموذج تفاوض محلي للعملاء المحددين
def negotiated(server_s, client_s):
    return max(server_s, client_s) if 0 in (server_s, client_s) else min(server_s, client_s)

assert negotiated(6, 10) == 6
assert negotiated(0, 10) == 10
assert negotiated(0, 0) == 0
print(negotiated(6, 10), negotiated(0, 10))
الناتج المتوقع
6 10

يتبع الحساب قاعدة العائلات المحددة ولا يقيس كشف فشل النبض.

لا يعيد فتح النقل كل الضمانات

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

حفظ خطة تعاف محدودة

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

json سياسة تعافي اتصال اصطناعية
{"startup_deadline_seconds":30,"retry_delay_seconds":2,"reconcile_unconfirmed":true,"restore_subscriptions":"client-supported","preserve_business_identity":true}

توثق الحقول المقصود ولا تمثل خيارات منشئ لكل عميل.

استخدام أدلة الدورة قبل تغيير المهل

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

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

معالجة الانقطاعات المتكررة بتعطيل النبض فقط.

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

تكرر PRECONDITION_FAILED مع التعافي التلقائي.

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

إعادة وسوم قديمة بعد الاتصال.

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

اختبر فهمك

1. هل يثبت نبض متفاوض عشر ثوان اكتمال مهمة خلالها؟

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

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

2. لماذا قد يبقى النشر غير مؤكد رغم نجاح الاتصال الجديد؟

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

قد يفشل القديم بعد القبول وقبل وصول التأكيد. لا يكشف المقبس الجديد النتيجة المفقودة. صالح بالهوية وتحمل التكرار، وأبق المعلق منفصلاً عن أرقام القناة الجديدة.

أهم ما تعلمته

  • تكشف النبضات فشل النقل ولا تعتمد تقدم العمل.
  • يحتاج التعافي سياق بروتوكول جديداً وهوية عمل محفوظة.

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