إنتقل إلى المحتوى الرئيسي

0006 — استضافة النسخ منسقة بواسطة عقد قاعدة بيانات ذرية

السياق​

يجب أن تستضيف ملف تعريف النسخ المتكرر بالضبط عقدة واحدة - مضيفان على نفس الملف الشخصي يعني كل صفقة مصدر يتم نسخها مرتين (المال الحقيقي المفقود). تأتي العقد وتذهب (التوسع، التعطل، التحديثات المتعددة)، ولا نريد خدمة منسق منفصلة للتشغيل والحفاظ على الحياة.

القرار​

كل CopyEngineSupervisor تطالب بملفات تعريف مع عقد قاعدة بيانات ذري على جدول CopyProfiles:

  • المطالبة - تقييم ExecuteUpdate ذري (أو FOR UPDATE SKIP LOCKED عند الحد) يأخذ الملفات الشخصية التي تكون غير مخصصة أو التي انقضت عقدتها. تعني الذرية أن اثنين من المشرفين المتنافسين لا يطالبان أبداً بنفس الصف.
  • التجديد - عقدة حية تحدث عقدتها كل دورة، لذا تحتفظ بمطالبتها.
  • الاسترجاع - عقدة متعطلة تنقضي عقدتها، وناج يختار الملف الشخصي في دورته التالية (شفاء ذاتي). عند الإيقاف الرشيق، تحرر العقدة عقودها فوراً حتى يكون الفشل سريعاً.
  • حراسة - مضيف التي مهمته خرجت بينما الملف الشخصي لا يزال لنا يتم إعادة تشغيله.
  • Reconcile يتم إرجاع الأولويات لتجنب قطيع قاعدة البيانات من التحديثات في الحجم.

النتائج​

  • لا منسق منفصل للنشر أو الحفاظ على الصحة - Postgres هي المصدر الوحيد للحقيقة.
  • يتم منع النسخ المزدوج بواسطة ذرية مستوى الصف، وليس بالقفل على مستوى التطبيق.
  • كمون الفشل محدود بـ TTL عقد (ناقص المسار السريع رشيق المفرج عنه).
  • هذا هو مسار المال؛ يتم حراسته من قبل مجموعة الإجهاد الحتمية (DST) - أبداً تضعف سيناريو DST لجعله يمر.