مهلة الرؤية ستتسبب لك في مشكلة
يبلغ الحد الزمني الافتراضي لإخفاء العناصر في معظم قوائم الانتظار عشرات الثواني. وقد تتجاوز مدة استدعاء النموذج هذا الحد في حالة وجود سياق طويل ومزود بطيء، وعندها تقوم قائمة الانتظار بإعادة تسليم المهام التي لا تزال قيد التنفيذ، مما يؤدي إلى معالجتها مرتين.
- اضبط مهلة الانتظار استنادًا إلى قيمة p99 التي قمت بقياسها، مع ترك هامش أمان، وليس استنادًا إلى المتوسط.
- بل من الأفضل تمديد عقد الإيجار طوال مدة العمل، بحيث يحتفظ العمل الذي يستغرق وقتًا طويلاً حقّه في الإيجار، ويتم الإفراج عن العامل المتوفى بسرعة.
- هذا هو بالضبط الفشل الذي توجد مفاتيح الإيدمبوتنتية من أجله. فإذا كانت متوفرة، فإن إعادة الإرسال تُعد استدعاءً مهدرًا. أما إذا لم تكن متوفرة، فهي تُعد نشرًا مزدوجًا.
محاولات الإعادة التي لا تؤدي إلى تضخيم
إن هذه السياسة الساذجة، التي تقضي بإعادة المحاولة ثلاث مرات على الفور، تحول أي عطل مؤقت في المزود إلى حالة «رفض الخدمة» ناجمة عن أخطاء ذاتية، وذلك في اللحظة بالذات التي تكون فيها السعة محدودة.
- أعد المحاولة فقط في الحالات المؤقتة: انتهاء المهلة، أخطاء 429، أخطاء 5xx. لا تقم أبدًا بإعادة المحاولة في حالة الخطأ 400؛ فالبيانات المدخلة خاطئة وستظل خاطئة في المرة القادمة.
- قم بالتراجع بشكل أسي مع استخدام التذبذب. فبدون التذبذب، يقوم كل عامل بإعادة المحاولة في وقت واحد، مما يؤدي إلى تكرار الارتفاع المفاجئ في الحمل.
- ضع حدًا أقصى لعدد المحاولات، وحدًا أقصى للوقت الإجمالي. يجب أن تكون إعادة محاولة تنفيذ المهمة لمدة ساعة قرارًا يتخذه شخص ما، وليس قرارًا تتخذه قائمة الانتظار.
- يجب مراعاة مؤشر «Retry-After» عندما يرسله المزود. فهذه المعلومات أفضل من السياسة التي تتبعها.
- ثم قم بتصنيفها كرسالة ميتة، مع توفير سياق كافٍ لإعادة معالجتها دون الحاجة إلى إعادة بناء أي شيء.
كل محاولة إعادة تتطلب استدعاءً كاملاً للنموذج. سياسة إعادة المحاولة هي سياسة إنفاق، ومن المفيد قراءتها بهذه الطريقة مرة واحدة.
قائمة الرسائل الميتة هي قائمة مهام
قائمة الرسائل المهملة التي لا يقرأها أحد هي بمثابة انقطاع في الخدمة لم يلاحظه أحد بعد. تعامل معها على أنها قائمة قرارات وليس مقبرة.
- تنبيه بشأن معدل الوصول، وليس العمق. فالتدفق البطيء والمستمر أمر طبيعي؛ أما التغير المفاجئ فهو حادثة.
- تجميعها حسب سبب الفشل. إن وجود أربعين حالة فشل ناجمة عن سبب واحد يُعد خطأً واحدًا، وقراءتها كل على حدة تُهدر وقت الصباح.
- احتفظ بالرسالة الأصلية وبيانات الفشل، بحيث لا تحتاج عملية إعادة التشغيل إلى إعادة بناء.
- اجعل إعادة التشغيل عملية تتم بأمر واحد. فإذا كانت صعبة، فلن تتم، وسيتم التخلي عن المهمة بهدوء.
عمليات الردم
في مرحلة ما، ستضطر إلى إعادة معالجة بيانات شهر ما، إما بسبب خطأ في التعليمات، أو تغيير في النموذج، أو خلل أدى إلى تلف أحد الحقول. وهنا يتضح ما إذا كانت الانضباطية التي اتبعتها في المراحل السابقة قد آتت ثمارها أم لا.
- حدد النطاق بدقة: نطاق زمني، أو حالة، أو إصدار. عبارة «كل شيء منذ مارس» لا تُعد نطاقًا.
- قم أولاً بإجراء تجربة تجريبية، مع تسجيل القرارات في المخزن دون تنفيذ أي إجراءات لاحقة. قارن النتائج مع ما هو موجود بالفعل.
- اقرأ الفروق قبل إجراء عملية التسجيل. خلال إحدى عمليات ملء الفجوات، اكتشفنا أن 3% فقط من السجلات قد تغيرت فعليًّا، مما حوّل عملية إعادة تشغيل محفوفة بالمخاطر إلى عملية محددة الهدف.
- قم بتشغيله عبر نفس المسار المتماثل الذي يمر عبره حركة المرور الحية. أما مسار التعبئة البديل فهو تنفيذ ثانٍ وسيختلف عن الأول.
- اضبط حد السرعة بحيث يكون أقل من حجم حركة المرور الحالية، حتى لا يتسبب التعبئة التكميلية في إحداث نقص في سعة قائمة الانتظار التي تخدم المستخدمين.
هل تريد أن ننفّذ هذا معك؟
التدقيق هو هذه المنهجية موجّهة إلى أنظمتك، وفي نهايته خطة بناء مُسعّرة.
تحديد موعد مكالمة
