GraphQL / المتقدم: التنفيذ المحدود والموزع / الدرس 17
الرصد والمواعيد النهائية ومرونة المصدر
فسر زمن العملية بمراحلها وسلسلة اعتماداتها، وحدد ميزانية مشتركة وإلغاءً فعالاً مع بيانات رصد محدودة تحمي الخصوصية.
في هذه الصفحة
أهداف الدرس
- افصل زمن التحليل والتحقق والانتظار والمحلل والمصدر.
- وزع موعداً مشتركاً وحلل الإلغاء وتضخم الإعادة.
تتبع العملية عبر مراحلها الحقيقية
قد يستهلك طلب GraphQL البطيء وقته في انتظار اتصال، أو تحليل وثيقة كبيرة، أو التحقق من أجزائها، أو انتظار مصدر، أو المرور بخدمات يعتمد بعضها على بعض. لا يكفي زمن HTTP الإجمالي لتحديد السبب. سجل معرفاً آمناً للعملية، وإصدار التنفيذ، وفئة هوية المستدعي، وأزمنة المراحل، واتصالات المصدر، وفئة النتيجة، من دون حفظ قيم المتغيرات الخاصة. قد تؤدي الوثائق الخام ومعرفات المستخدمين الكثيرة التنوع إلى تضخم بيانات الرصد وكشف معلومات حساسة. استعمل تجزئات وثائق مراجعة وتسميات محدودة التنوع، مع آلية ربط مضبوطة تسمح بالتحقيق التفصيلي عند الحاجة.
ميز الزمن المنقضي عن مجموع فترات العمل
يميز سجل التتبع التالي العمل المتسلسل قبل التنفيذ عن فترتين متزامنتين للوصول إلى المصادر. تتداخل المدتان، ولذلك يبالغ جمع كل الفترات في تقدير الزمن المنقضي فعلياً. يحدد المسار الحرج للعملية زمن انتظارها أكثر مما يحدده مجموع مدد جميع المحللات. وبالمثل قد تشمل فترة الأب عمل أبنائه، فيؤدي جمعهما إلى احتساب الوقت نفسه مرتين. هذه JSON ملاحظة تفسيرية اصطناعية وليست خرج حزمة رصد. لا تقدم زمناً مقاساً أو معدل نجاح أو هدف مستوى خدمة لأي نشر يعمل فعلياً؛ إنما تشرح كيفية قراءة تداخل العمل.
{
"operation": "CourseCard",
"preExecutionMs": 3,
"concurrentSources": [{"name":"catalog","durationMs":12},{"name":"author","durationMs":8}],
"serializationMs": 1,
"illustrativeCriticalPathMs": 16
}
وفق الجدول البسيط المفترض، يكون الحساب 3 + max(12,8) + 1 = 16 ms. يحتاج تحليل تشغيل حقيقي إلى بيانات تتبع تكشف الجدولة والعمل الذي لم يسجل، ولا تكفي هذه الأرقام الافتراضية لقياسه.
شارك الموعد النهائي عبر سلسلة الاعتمادات
إذا منحت كل مكالمة تابعة مهلة طويلة جديدة، فقد يستمر طلب قصير للعميل في استهلاك الموارد بعد زوال فائدته. مرر موعداً نهائياً مشتركاً أو ميزانية الوقت المتبقية عبر آليات السياق والإلغاء التي يدعمها التنفيذ، واحجز وقتاً لتسلسل الرد والتنظيف المنضبط. عند انقطاع العميل يجب أن يصل الإلغاء إلى المهمة الحقيقية في المصدر حتى يوفر العمل؛ فمجرد رفض الوعد الأعلى قد يترك الاستعلام جارياً. تختلف المكتبات وبرامج التشغيل في دعم الإلغاء. وثق هذا القيد وتحقق منه في اختبار دمج مأذون به، ولا تفترض أن تمرير إشارة مشتركة يضمن إيقاف كل مصدر.
احسب الوقت المتبقي للمصدر صراحة
يحجز الحساب المحلي عشرة ميلي ثانية لإنهاء الرد من ميزانية افتراضية قدرها مئة ميلي ثانية. بعد انقضاء خمسة وثلاثين، تبقى خمس وخمسون للمصدر. إذا استهلك العمل المنقضي الميزانية بعد طرح الحجز، فلا يجوز منح المصدر مهلة سالبة أو تحويلها إلى انتظار غير محدود. الأرقام هنا لتعليم حساب الميزانية، وليست توصية بمهلة مناسبة للإنتاج. تحتاج القيم الحقيقية إلى أدلة عن حمل العمل وسلوك المصدر. يمثل الموعد النهائي حداً لصحة السلوك واستهلاك الموارد، بينما يظل زمن الانتظار المقبول للمستخدم متطلباً مستقلاً يحدده المنتج.
function remaining(total, elapsed, reserve) {
return Math.max(0, total - elapsed - reserve);
}
console.assert(remaining(100, 35, 10) === 55);
console.assert(remaining(100, 95, 10) === 0);
console.assert(remaining(100, 120, 10) === 0);
تمنع الدالة إرجاع ميزانية سالبة في الحالات الثلاث. لكنها لا توقف مهمة تعمل، ولا تضبط مهلة برنامج تشغيل أو آلية إلغاء.
تجنب تضاعف الإعادات عبر طبقات الرسم
عندما يكرر العميل والبوابة وموائم المصدر الطلب كل منهم مستقلاً، قد تنتج العملية المرئية الواحدة محاولات كثيرة على المصدر. حدد طبقة مسؤولة عن الإعادة، وافحص الوقت المتبقي، وفئات الأخطاء القابلة للإعادة، وحد المحاولات. تحتاج القراءة والطفرة إلى استدلال مختلف عن النتيجة، خصوصاً بعد كتابة لا يعرف هل حفظت. وتتطلب قواطع الدائرة والبيانات البديلة سياسات خاصة بالمجال؛ فصلاحية تسجيل قديمة ليست كعنوان وصفي قديم. بعد التغيير، افحص تزامن المصدر ومعدل الخطأ وتكرار البيانات الجزئية وتحرير الموارد معاً. قد يخفي تحسن المتوسط أخطاء أسوأ عند أطراف التوزيع أو قرارات بديلة غير صحيحة.
الأخطاء الشائعة وإصلاحها
تتجاوز مدد المحللات زمن الطلب
- لماذا يحدث؟
- جمعت مدد متداخلة كزمن مستقل.
- كيف تصلحه؟
- اقرأ العلاقات وحدد المسار الحرج.
- كيف تتجنب تكراره؟
- وثق شمول المقاييس للأبناء.
تستنزف الإعادة المصدر المشترك
- لماذا يحدث؟
- طبقت طبقات متعددة سياسات مستقلة.
- كيف تصلحه؟
- اختر مالكاً وقيد المحاولات بالموعد.
- كيف تتجنب تكراره؟
- عد المحاولات لكل عملية منطقية.
تخفي المهلة عملاً مستمراً
- لماذا يحدث؟
- أوقفت الإشارة انتظار المستدعي فقط.
- كيف تصلحه؟
- استخدم إلغاء المصدر المدعوم وتحقق من التنظيف.
- كيف تتجنب تكراره؟
- اختبر تحرير الموارد عند القطع والموعد.
اختبر فهمك
1. مصدران 12 و8 ms بالتوازي. لماذا ليس المسار الحرج 20؟
اعرض الحل المشروح
تتداخل الفترتان، ولذلك تحدد فترة الاثنتي عشرة ميلي ثانية الأطول مدة مرحلة التوازي في الجدول المفترض. جمعهما يحسب مقداراً متراكماً من العمل، لا الزمن المنقضي على الساعة. قد تتضمن التتبعات الحقيقية انتظاراً وعلاقات اعتماد إضافية؛ لذا افحص أوقات البداية والنهاية وعلاقات الأب والأبناء قبل حساب المسار الحرج أو اختيار علاج للبطء.
2. لماذا يختلف بديل العنوان عن بديل صلاحية الوصول؟
اعرض الحل المشروح
تختلف عاقبة قدم القيمة بين المجالين. قد تسمح سياسة العرض بعنوان قديم مؤقتاً، بينما قد تسمح صلاحية قديمة بفعل سحبت صلاحيته بالفعل. عرف الحداثة وسلوك الفشل حسب متطلبات المجال، وتجنب سياسة عامة تقدم البيانات القديمة دائماً عند تعذر المصدر. أدرج حالات المنع وعدم توافر المصدر في اختبارات الصحة قبل تحسين التوافر.
أهم ما تعلمته
- يفسر التتبع كلفة المرحلة والاعتماد لا الإجمالي فقط.
- يجب اتساق الموعد والإلغاء وملكية الإعادة عبر الطبقات.