وثائق أصول Core

توثيق محرك حالة العالم الحتمي ومراجع API.

وثائق بوابة القرار

فحص ما قبل الطيران والالتزام العكسي

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

المشكلة التي يحلها هذا المفهوم

تحتاج الأنظمة المعقدة إلى قدرتين يسهل إساءة استخدامهما:

  • تحقق من خطط متعددة الخطوات دون المساس بحالة الإنتاج.
  • تعويض التغييرات الملتزمة دون إعادة كتابة التاريخ.

تقدم عملية التحقق المسبق والالتزام العكسي هذه القدرات مع الحفاظ على سجل الالتزام موثوقًا وآمنًا لإعادة التشغيل.

الأفكار الأساسية

التحقق قبل الطيران

يتم تنفيذ عملية Preflight بنفس منطق L2/L3 كما في الالتزام الحقيقي، ولكنها تعمل في بيئة معزولة بحيث لا توجد تغييرات، ولا إضافة إلى سجل الالتزام، ولا انبعاثات للمراقب.

الخصائص الرئيسية:

  • نتائج مكافئة للالتزام باستخدام نفس ترتيب العمليات.
  • دلالات الفشل السريع (الفشل الأول ينهي التحقق).
  • مخرجات حتمية لحالة عالم معينة.
  • يعيد validated_world_seq حتى يتمكن العملاء من تنسيق التزامن المتفائل.
  • لا تغيير في الحالة، لا إضافة سجلات، لا انبعاثات مراقب.

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

استخدم الفحص المسبق عندما تحتاج إلى التحقق من خطة أو جدول زمني أو تسلسل متعدد العمليات قبل إصدار الالتزام الحقيقي.

الالتزام العكسي

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

الخصائص الرئيسية:

  • يستخدم commit_id كمعرف خارجي للتراجع.
  • يتطلب سبب التدقيق ويحمّل إدخال جانب التراجع للالتزام المستهدف.
  • يتحقق من الحالة الحالية مقابل الحالة المتوقعة للخطة (المسجلة في وقت الالتزام) قبل تطبيق خطة التراجع.
  • يفشل في الإغلاق إذا كانت إدخال التراجع مفقودًا أو منتهي الصلاحية.
  • يصدر استجابة التزام عادية مع بيانات تسلسل جديدة.

عكس الالتزام الأخير عادة ما يكون بسيطًا لأن الحالة الحالية لا تزال تتطابق مع الحالة المتوقعة بعد الخطة. عكس الالتزامات التاريخية مشروط: قد تكون الالتزامات الأخرى قد نقلت أو أزالت الأصول، أو ملأت الحاويات، أو غيرت قيود الفئة. تفشل خطة العكس في تلك النزاعات.

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

إلغاء توفر السايدكار

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

كيف يتناسب مع النظام

Commit request -> Preflight (optional) -> Commit -> Commit log append
Reverse commit request -> Load reverse plan -> Validate post-state -> Compensating commit (if valid) -> Commit log append

مسار التحقق المسبق هو مسار تحقق؛ بينما الالتزام العكسي هو مسار كتابة تعويضي. كلاهما يمر عبر خادم الكتابة ويجب أن يحترم قواعد المصادقة والحصة والسياسة.

المتغيرات الرئيسية والضمانات

التحقق غير المتغير

لا يتغير حالة Preflight أبدًا، ولا يضيف إلى السجل، ولا يصدر مراقبين. إنه آمن للتخطيط والأتمتة.

تاريخ الإضافة فقط

إضافة الالتزام العكسي يضيف التزامًا جديدًا. يبقى الالتزام الأصلي في السجل ومسار التدقيق.

فشل الإغلاق التراجع

إذا كانت بيانات التراجع مفقودة أو منتهية، يتم رفض التراجع. لا يُسمح بالتراجعات الجزئية.

التفويض الصريح

عملية الالتزام العكسي هي عملية مميزة وتخضع لقيود RBAC. يتم تسجيل أسباب التدقيق مع الالتزام العكسي.