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

NestJS / المتقدم: العمر وأدلة العمل الموزع / الدرس 17

الرصد والصحة والإيقاف المحدود

قس النتائج الآمنة ونسق الجاهزية والتصريف وتحرير الموارد بمسؤولية دورة واضحة.

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

أهداف الدرس

  • ميز الرصد والحياة والجاهزية ونجاح العمل.
  • اشرح خطافات الإيقاف دون افتراض أن close تنهي كل مهمة أو عملية.

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

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

صف حالة الخدمة ومسباراً محدوداً

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

json عقد صحة وتصريف اصطناعي
{"states":["starting","serving","draining","stopped"],"readyOnlyIn":"serving","probe":"safe-bounded-summary","drain":"deadline-and-owned-cleanup","sourceSecrets":"never-in-health-body"}

لا يضبط السجل تكامل صحة أو يرسل مسباراً؛ يصرح بفرضيات تحتاج تحققاً مستقلاً.

فعل سلوك الدورة وامتلكه بقصد

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

اختبر القبول والإكمال كقاعدتين محليتين

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

javascript نموذج محلي كامل للقبول والتصريف
const state={phase:"serving",active:0};
function accept() {if (state.phase !== "serving") return false;state.active++;return true;}
console.assert(accept()); state.phase="draining";
console.assert(!accept() && state.active === 1);
state.active--; if (state.active === 0) state.phase="stopped";
console.assert(state.phase === "stopped");

تنتهي عملية مقبولة ولا تدخل أخرى بعد التصريف دون إغلاق تطبيق فعلي.

اربط ادعاء النشر بالدليل المنفذ

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

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

يكشف مسبار اعتماد المصدر

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

يترك تطبيق مغلق عملاً خلفياً

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

تدخل طلبات بعد تنظيف المصدر

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

اختبر فهمك

1. هل ينهي استدعاء app.close عملية Node بالضرورة؟

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

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

2. لماذا تميز فحص الجاهزية عن فحص حياة العملية؟

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

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

أهم ما تعلمته

  • تصف الصحة والرصد جوانب تشغيل مختلفة.
  • يحتاج الإيقاف المنظم مسؤولية محدودة تتجاوز المزخرفات.

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