معمارية البرمجيات / التطور: السعة والانتقال والتحقق والمراجعة / الدرس 14
اجعل التخزين المؤقت قرار حداثة وفشل
صمّم مفاتيح التخزين والإبطال وحماية الاندفاع والرجوع إلى المرجع لاستعلامات الورش.
في هذه الصفحة
أهداف الدرس
- حدّد ما يجوز تقادمه والعمليات التي تبقى مرجعية.
- اشرح تسابق التخزين الجانبي وحدود المفاتيح الآمنة.
خزّن استعلاما محددا بدلا من كائن غير محدد
يحفظ التخزين المؤقت نتيجة قابلة لإعادة الاستخدام لتجنب العمل المكرر، ويضيف أيضا تمثيلا للحالة. حدّد الاستعلام وتحمل التقادم والحساسية وسلوك الفقد قبل المنتج. يختلف تأخر وصف ورشة عام عن قرار إذن أو تخصيص مقعد. يجب أن يحفظ المسار المصيب سياسة الوصول المرجعية. يفيد التخزين حين يثبت تكرر العمل وإمكان إعادة النتيجة؛ وقد تجعل الإصابة النادرة أو عبء الإبطال الحالة الإضافية ضارة.
ضمّن كل بعد يغير النتيجة في المفتاح
إذا اختلف الوصف باللغة فقد يرسل مفتاح بمعرف الورشة فقط العربية لطلب إنجليزي أو العكس. وقد تهم الجهة ونطاق الإذن ونسخة التمثيل ومعاملات البحث. تجنب الأسرار والبيانات الشخصية في أسماء مفاتيح مرئية. يضم المثال نسخة تمثيل ولغة لاستعلام عام. ولا يحوّل الخاص إلى عام أو يحدد سياسة التفويض. راجع التطبيع لتشترك المدخلات المكافئة ولا تتصادم النتائج المختلفة المفوضة.
def workshop_key(workshop_id, language):
if language not in {"en", "ar"}:
raise ValueError("unsupported language")
return f"workshop-description:v2:{workshop_id}:{language}"
print(workshop_key("ws-42", "en"))
print(workshop_key("ws-42", "ar"))
workshop-description:v2:ws-42:en
workshop-description:v2:ws-42:ar
تنتج اللغتان مفتاحين مختلفين. يستخدم البرنامج معرفات عامة ثابتة ولا يتصل بخدمة. تضاف الأبعاد الأخرى عندما يتطلبها العقد الفعلي.
الإبطال بروتوكول تزامن
يقرأ النمط الجانبي الذاكرة ويحمل المرجع عند الفقد ثم يعيد الحفظ. قد يتسابق تحديث وإبطال مع قارئ بطيء يعيد قيمة قديمة لاحقا. يحد زمن الحياة نوعا من التقادم وفق افتراضات لكنه لا يضمن الصحة الفورية. قد تعالج النسخ والكتابة الشرطية والإبطال بالأحداث أو التجاوز للعمليات الحساسة سيناريوهات مختلفة. اشرح ضمان الترتيب المطلوب ولا تدّع أن حذف مفتاح يحل الاتساق دائما.
حدّد عمل الفقد واختر سلوك الفشل
عند انتهاء مفتاح شائع قد يعيد الجميع بناءه ويحمّلون المرجع. قد تقلل دمج الطلبات وحدود تحديث التوازي وتنويع الانتهاء الاندفاع بكلف خاصة بالتنفيذ. قرّر هل يُسمح بقديم أثناء التحديث أم يجب الفشل بصدق. لا ينبغي أن يرسل تعطل الذاكرة طلبات غير محدودة إلى قاعدة ضعيفة. يحدد المثال سياستين للوصف والتخصيص، ليوضح غموض بديل عام واحد.
workshop_description:
freshness: bounded stale display permitted by product policy
miss: coalesced bounded refresh
cache_failure: bounded authoritative read or explicit failure
seat_allocation:
cache_authority: never
decision: authoritative protected write path
لا تحتوي السياسة مدة انتهاء عامة عمدا. تحدد متطلبات الحداثة وسعة المصدر المقاسة القيم الفعلية.
اختبر المسارات الباردة والقديمة والمعطلة
تشمل الاختبارات المعزولة فقدا باردا وإصابة وتحديثا متزامنا وانتهاء جماعيا وتعطل التخزين واختلافات التفويض. افحص المحتوى وعدد طلبات المصدر. لا تثبت الإصابة العالية صحة المعلومة أو حداثتها. أظهر ملكية التخزين وأحداث الإبطال وأدرج حذف البيانات الحساسة واحتفاظها. ينفذ الدرس بناء مفاتيح فقط، ولا يشغّل ذاكرة أو يقيس إصابة أو يتحقق من ضمان مورد.
الأخطاء الشائعة وإصلاحها
يشترك الوصف العربي والإنجليزي في نتيجة مخزنة.
- لماذا يحدث؟
- غابت اللغة عن المفتاح رغم تغييرها النتيجة.
- كيف تصلحه؟
- أضف اللغة وانقل أو أبطل التمثيل القديم بأمان.
- كيف تتجنب تكراره؟
- اسرد أبعاد النتيجة قبل تصميم المفاتيح.
يسمح عدد مقاعد قديم بالحجز الأخير.
- لماذا يحدث؟
- عبر تحسين العرض حد الكتابة المرجعي.
- كيف تصلحه؟
- تحقق من التخصيص ذريّا لدى المالك.
- كيف تتجنب تكراره؟
- صنّف القيم المخزنة وفق استخدامها المسموح.
يرهق تعطل التخزين القاعدة.
- لماذا يحدث؟
- كانت طلبات الرجوع بلا حد أو تنسيق.
- كيف تصلحه؟
- حدّد توازي التحديث والرجوع المرجعي.
- كيف تتجنب تكراره؟
- اختبر التعطل وانتهاء مفتاح شائع في المختبر.
اختبر فهمك
1. هل يضمن انتهاء ستين ثانية ألا يزيد تقادم الرد عن ستين ثانية؟
اعرض الحل المشروح
ليس دون افتراضات دقيقة عن القراءة والكتابة والتحديث والتقديم. قد يعيد قارئ متأخر بيانات قديمة وقد تطيل سياسة القديم الاستخدام. حدّد ساعة الحداثة وبروتوكول التحديث واختبر التسابق؛ فلا تستنتج ضمانا كاملا من الإعداد وحده.
2. لماذا قد تكون نسبة إصابة أقل مقبولة؟
اعرض الحل المشروح
قد تتجاوز السياسة العمليات الخاصة أو الحساسة للصحة أو تستخدم نافذة قصيرة أو حملا قليل التكرار. قارن العمل الموفر والزمن والصحة والذاكرة والتعقيد. تعظيم الإصابة على حساب الإذن والحداثة يهزم الوعد.
أهم ما تعلمته
- ينشئ التخزين المؤقت حالة أخرى وقرار اتساق جديدا.
- تنتمي المفاتيح والحداثة وسياسة الفشل إلى عقد واحد.