طابور كان يُصرَّف كل صباح توقف عن التصريف. المسار ما زال يظهر قيد التشغيل. والاتصال بالخدمة الخارجية ما زال يُختبر بنجاح. أما مسؤول التشغيل الذي ذهب يبحث عن العطل فوجد سجلًا مليئًا بنشاط عادي، وفجوة واحدة في الموضع الذي كان ينبغي أن تكون فيه دفعة من العناصر.
وبتتبّع ما جرى إلى الخلف، بدا التسلسل عاديًا. كل عنصر في الطابور كان يستدعي خدمة ذكاء اصطناعي خارجية. ومع حِمل صباحي أثقل، بدأت الخدمة ترفض بعض تلك الاستدعاءات، لأن المسار بلغ السعة المتاحة له. فالتقط المسار كل رفض، وسجّله بوصفه مُعالَجًا، وانتقل إلى العنصر التالي. والعناصر التي رُفضت استدعاءاتها غادرت الطابور مع العناصر التي نجحت.
ذلك العمل كان قد قُبل من عميل، وخرج من الطابور، وبقي غير منجز. الحد منع الاستدعاء المقصود، ومعالجة المسار هي التي حدّدت ما جرى للعمل بعد ذلك. هذا هو الانقطاع — وقد وقع بينما كان كل مكوّن يتصرف تمامًا كما بُني ليتصرف.
ما الذي بلغه المسار
لكل اعتمادية خارجية — نموذج ذكاء اصطناعي أو واجهة برمجية — سعة محدودة متاحة لمسارك. وحدود المعدل هي القيود التي تفرضها الخدمة على مقدار الاستخدام المتاح لمسارك في فترة أو لحظة معينة؛ وقد تُقاس بعدد الطلبات أو بغيره من وحدات السعة. ومن صورها حدود معدل الطلبات، حين تكون السعة مقاسة بعدد الطلبات المقبولة خلال نافذة زمنية.
وهذه الحدود تأخذ أشكالًا مختلفة. بعضها موثَّق ومرتبط بفئة الاشتراك، وبعضها يتحرك مع الطلب، وبعضها يُفرض ببساطة في اللحظة التي تبلغه فيها.
والمرونة هنا تبدأ بتعديل متواضع في الافتراض: عامِل السعة المتاحة الآن بوصفها محدودة، بدل افتراض أن كل استدعاء تقصده سيُقبل في اللحظة التي ترسله فيها.
الخطأ ليس بلوغ الحد، بل بلوغ صنف معروف من قيود السعة دون أن تكون قد قررت ما يحدث للعمل بعده.
معالج الأخطاء توقف قبل قرار واحد
المسار في تلك الحادثة كان يملك معالجة للأخطاء فعلًا. التقط الرفض وكتبه. أما الجزء الناقص فكان قرارًا بشأن العنصر الذي رُفض استدعاؤه للتو.
الخطأ قد يخبرك لماذا لم يكتمل الاستدعاء. وهو لا يقرر ما ينبغي لمسارك أن يفعله بالعمل غير المنجز.
وهذان جزءان منفصلان من التصميم، والثاني هو الذي يغيب عادة، لأن التقاط الخطأ يبدو وكأنه معالجته. فالاستثناء الملتقط ينتج سطرًا مرتبًا في السجل، ومسارًا يبدو متماسكًا. أما العنصر الذي كان يحمله فمسألة أخرى، وينبغي أن تُجاب عمدًا.
أربعة تصرّفات للعمل غير المنجز
حين تكون السعة غير متاحة، لا بد للعمل الذي يحمله المسار أن يذهب إلى مكان. وهناك أربعة أماكن يمكن أن يذهب إليها، ولكلٍّ منها حالته:
- إعادة المحاولة — محاولة العمل نفسه مرة أخرى بعد أن تكون السعة قد أصبحت متاحة
- الإدراج في الطابور — حفظ العمل ليُعالَج تلقائيًا حين تتوفر السعة
- التأجيل — حفظه لمحاولة لاحقة مجدولة أو يستأنفها أحد عمدًا
- التنفيذ المخفَّف — المضي بنتيجة مخفَّفة عمدًا لكنها صالحة، تتجنب الاستدعاء المحجوب
وإعادة المحاولة استجابة واحدة لحد السعة، لا الإجابة الافتراضية عن كل حدث من هذا النوع. وهي تصرّف مشروع حين يكون للمسار شرط واضح للمحاولة التالية: انتظار، وحدّ لعدد المحاولات، ووجهة مسماة للعمل الذي يظل متعثرًا بعدها. أما تكرار الطلب فورًا من دون شرط جديد فلا يخلق سعة إضافية، ولا يغيّر حد السعة الذي أوقفه، وقد يصطدم المسار به مرة أخرى بينما يبقى العمل الأصلي معلَّقًا. وحين تكون حالة اكتمال الاستدعاء غير مؤكدة فعلًا، ينبغي لإعادة المحاولة أيضًا أن تتجنب تكرار أثر جانبي وقع بالفعل.
والإدراج في الطابور والتأجيل متقاربان بما يستحق الفصل. أدرِج في الطابور حين ينبغي للعمل أن يستأنف تلقائيًا مع توفر السعة. وأجّل حين ينقل المسار ذلك العمل عمدًا إلى نقطة معالجة لاحقة: جدول، أو مُشغِّل، أو إجراء يستأنفه أحد.
أما التنفيذ المخفَّف فيستحق تعريفًا دقيقًا، لأنه يقع قريبًا من قرار مختلف تمامًا. التنفيذ المخفَّف يعني أن يتجاوز المسار خطوة تعتمد على السعة أو يقلّلها، مع بقاء الناتج صالحًا للغرض المحدد: خطوة إثراء اختيارية غير متاحة، فيُنشأ السجل بلا إثراء ويوسَم بأنه ينقصه. ولا يعني الانتقال إلى مزوّد أو نموذج آخر للحفاظ على الخدمة نفسها؛ فذلك قرار استمرارية مختلف، وهو سؤال منفصل عمّا يُفعل بالعمل حين تنفد السعة المتاحة لك.
وتأكيد ينتظره العميل، ودفعة إثراء ليلية، ينتميان إلى صنفين مختلفين من العمل، ويستحقان إجابتين مختلفتين.
أيًّا كان التصرّف، يبقى العمل المعلَّق ظاهرًا
الأربعة تجيب عن السؤال نفسه: ماذا يحدث للعمل. وهي تترك سؤالًا ثانيًا مفتوحًا، ينطبق عليها جميعًا بالتساوي — هل يستطيع أحد أن يعرف أن هذا العمل ما زال معلَّقًا؟
أيًّا كان التصرّف الذي تختاره، ينبغي أن يبقى العمل المعلَّق ظاهرًا حتى يكتمل، أو يُلغى عمدًا، أو يُحسم بطريقة أخرى. فعنصر في الطابور بلا موضع يُظهر أنه ينتظر يبدو تمامًا كعنصر مكتمل. وعنصر مؤجَّل لا وجود له إلا داخل جدولة زمنية سيكتشفه العميل الذي كان ينتظره.
الإخفاق المنضبط يحفظ حالة العمل ويُبقي الإجراء المعلَّق ظاهرًا. وإسقاط العمل بصمت ليس مرونة؛ بل انقطاع بلا ضجيج. وأي استجابة تُضيّع العمل، أو تترك حالته مجهولة، أو تخفي إجراءً معلَّقًا، تسقط في هذا الاختبار مهما بدا المسار هادئًا وهو يواصل.
نطاق السعة
نطاق السعة وصف قصير لمسار واحد عند حدّ سعته. وهو ليس جدول حصص: إنه يسجّل ما يفعله مسارك حين تحجب السعةُ الاستدعاء المقصود، في أربعة حقول، بهذا الترتيب.
إشارة السعة
ما الذي يخبر هذا المسار أن الاستدعاء الخارجي المقصود لا يمكن أن يمضي لأن السعة غير متاحة؟ في حادثة الطابور الصباحي، كانت تلك الإشارة حاضرة منذ أول استدعاء مرفوض. التُقطت، وسُجّلت، وعوملت بوصفها نهاية المسألة. والإشارة التي لا تصل إلا إلى السجل تكون قد رُصدت دون أن تُوصَل بشيء.
التصرّف
لهذا الصنف من العمل: إعادة محاولة، أم إدراج في طابور، أم تأجيل، أم تنفيذ مخفَّف؟ لكل صنف من العمل إجابته الخاصة، وكتابتها منفصلة هي ما يمنع تطبيق ردّ فعل واحد على كل ما يلمسه المسار.
الحالة المحفوظة
ما الذي ينبغي أن يبقى كي يستطيع العمل أن يُستكمل لاحقًا على نحو صحيح؟ عادةً العنصر نفسه، وموضعه في التسلسل، وما كان المسار قد فعله به. في الحادثة أعلاه، غادر العنصر الطابور وأخذ معه أي أثر يدل على أنه قُبل — ولهذا بدأ التعافي من شكاوى العملاء.
موضع العمل المعلَّق
أين يبقى العمل غير المكتمل ظاهرًا حتى يُستكمل أو يُلغى بقرار واضح؟ قائمة يفتحها أحد، أو عدّاد على شاشة تشغيلية، أو تنبيه باسم مسؤول — الشكل أقل أهمية من أن يكون للعمل المعلَّق موضع يجلس فيه حيث يراه إنسان. وإذا كانت الإجابة الصادقة عن هذا الحقل أن العمل المعلَّق سيجلس في السجلات، فالموضع لم يُختر بعد.
املأه لمسار واحد
خذ مسارًا واحدًا يعتمد على استدعاء خارجي لنموذج ذكاء اصطناعي أو واجهة برمجية، وليكن المسار الذي سيصل إخفاقه إلى عميل أولًا. واكتب له الحقول الأربعة: الإشارة، والتصرّف، والحالة المحفوظة، وموضع العمل المعلَّق.
اترك أحد الحقول دون تعريف، وسيكشف حدُّ السعة السلوكَ الذي يملكه المسار هناك أصلًا. وغاية نطاق السعة أن يصير ذلك السلوك متعمَّدًا قبل بلوغ الحد.
قبل أن تضيف أداة جديدة، يستحق أن تعرف إن كان عملك يعتمد على نظام أم عليك أنت. أعددتُ تقييمًا مجانيًا من دقيقتين يمنحك قراءة واضحة لذلك، وأول خطوة يجب إصلاحها. ابدأ التقييم المجاني.
هل أنت مستعد لجعل الذكاء الاصطناعي يعمل بكفاءة؟
احجز جلسة تشخيص وسنرسم لك أكثر الحلول تأثيرًا في أعمالك.
احجز جلسة التشخيصإشارات أوضح. قرارات أذكى.
انضمّ إلى قائمتنا البريدية واحصل على أفضل ما نكتبه عن الذكاء الاصطناعي والأنظمة مباشرةً في بريدك — دون ضجيج.


