كتابة بنية المسار

هذا الملحق يوفر شرحًا مفصلًا حول كيفية تدفق الالتزامات عبر خادم الكتابة في Asset Core، من طلب HTTP إلى الاستمرارية الدائمة.

نظرة عامة

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

شرح مفصل

مراحل خط الأنابيب

يتكون مسار الكتابة من تسع مراحل:

  1. القبول: يقوم معالج HTTP بتعيين رقم تسلسل، والحصول على الأذونات
  2. التحقق المسبق: التحقق المتوازي (تحليل، مخطط، مصادقة، حجم، عدم التكرار)
  3. ذاكرة إعادة الطلب: تضمن ترتيب تسلسلي صارم
  4. كاتب واحد: يحصل على قفل وقت التشغيل، ينفذ العمليات
  5. الإغلاق: ينشئ دفعة الأحداث، يسجل سجل التراجع
  6. إرسال الإضافة: يرسل الدفعة إلى مجموعة العمال لإضافتها
  7. الدوام: يقوم العمال باستدعاء fsync، وإرجاع النتيجة
  8. الإنهاء: تحديث الحالة، الرد على العميل
  9. السائق/القارئ: سجل Tails، تحديثات التوقعات

نظام الإدخال

طبقة الإدخال تقبل طلبات HTTP وتغذيها في خط الأنابيب:

HTTP POST → Sequence Assignment → Precheck Workers → Reorder Buffer

المكونات الرئيسية:

  • عداد التسلسل: u64 ذري للترتيب الصارم
  • إعادة ترتيب إشارة المرور: حدود حجم المخزن
  • طابور العمل: قناة محدودة للتحقق المسبق من العمال

هذا التصميم يوفر ضغطًا عكسيًا عندما يكون النظام محملاً بشكل زائد.

خط أنابيب التحقق المسبق

يتم تنفيذ خطوات التحقق المسبق من قبل العمال بشكل متوازي:

  1. تحليل: فك تسلسل JSON، حساب التجزئة القياسية
  2. المخطط: تحقق من هيكل العملية
  3. المصادقة: تحقق من الأذونات (إذا تم تكوينها)
  4. الحجم: فرض حدود حجم الطلبات
  5. التماثل: تحقق من الالتزامات المكررة

كل خطوة تعيد Continue أو ShortCircuit. تعيد الدوائر القصيرة الاستجابات المخزنة دون الدخول إلى مسار الالتزام.

ممر الكاتب الفردي

يتم تسلسل جميع التغييرات في وقت التشغيل بواسطة الكاتب الفردي:

إرشادات إضافية:

Validated Commit → Lock Runtime → Execute Operations → Seal Batch → Submit Append

هذا يضمن:

  • لا توجد حالات سباق على الحالة
  • الترتيب الحتمي
  • دلالات التراجع النظيفة

يتم الاحتفاظ بقفل وقت التشغيل فقط أثناء التنفيذ، وليس أثناء الإدخال/الإخراج.

خط أنابيب المتانة

تتدفق الدفعات المختومة إلى مجموعة عمال الإلحاق:

إرشادات إضافية:

Sealed Batch → Append Queue → Worker Thread → Commit Log → fsync → Result

العمال هم خيوط نظام التشغيل (وليس مهام غير متزامنة) للتعامل مع الإدخال/الإخراج المحجوز. تتدفق النتائج مرة أخرى إلى الكاتب الوحيد للتنفيذ النهائي.

تدفق الحدث

الأحداث تحمل حمولات هجينة:

  • دلتا: ما الذي تغير (لتحليلات البيانات)
  • حالة ما بعد: القيمة النهائية (لإعادة التشغيل)

هذا يمكّن من التحليلات الفعّالة وإعادة التشغيل غير القابلة للتغيير.

ملاحظات التنفيذ

توبولوجيا القناة

يستخدم النظام قنوات mpsc محدودة بين المراحل:

القناةالمرسلالمستلمالحدود
work_txمعالج HTTPمدير التحقق المسبقqueue_capacity
result_txالعمالمخزن إعادة الطلبمحدود
commit_txمخزن إعادة الطلبكاتب واحدappend_queue_capacity
append_txكاتب واحدعمال الإضافةمحدود
append_rxالعمالكاتب واحدمحدود

تقدم قوائم الانتظار المحدودة ضغطًا خلفيًا وقابلية للرصد.

دمج المقاييس

كل مرحلة تسجل بيانات التتبع:

  • عمق الطوابير: نقاط الضغط المرئية
  • مدة المراحل: حيث يتم قضاء الوقت
  • عدادات النتائج: معدلات النجاح/الفشل

تستخدم المقاييس أسماء متسقة عبر جميع المراحل.

دلالات التراجع

إذا فشل الإلحاق:

إرشادات إضافية:

  1. يقوم الكاتب الفردي بتطبيق سجل التراجع
  2. يتم إلغاء الالتزامات المعتمدة بترتيب عكسي
  3. يتلقى العملاء 503 مع شرح
  4. تسجل المقاييس الفشل

هذا يضمن أن وقت التشغيل لا يحتوي على حالة يتيمة.

إيقاف التشغيل بشكل أنيق

تتم عملية الإيقاف في ترتيب:

إرشادات إضافية:

  1. توقف عن قبول الطلبات الجديدة
  2. تصريف عمال الفحص المسبق
  3. تصريف مخزن إعادة الطلب
  4. تصريف قائمة الانتظار للكتّاب الفرديين
  5. انتظر حتى تنتهي عمالة الإضافة
  6. الحفاظ على نقاط التحقق النهائية

لا يتم التخلي عن أي عمل أثناء الطيران.

متى يجب قراءة هذا

اقرأ هذا الملحق عندما:

  • معالجة مشاكل تأخير الكتابة
  • فهم مقاييس عمق الطابور
  • تعديل خط أنابيب الإدخال
  • التحقيق في ضمانات المتانة

للاستخدام اليومي، فإن الوثائق المفاهيمية كافية.

انظر أيضًا