التكرار والاتساق في نهاية المطاف
التكرار والاتساق في نهاية المطاف
1) لماذا الاتساق النهائي
عندما يتم توزيع النظام حسب المناطق/المناطق، فإن التسجيل المتزامن في كل مكان يعطي زمن انتقال مرتفع وتوافر منخفض في حالة فشل الشبكة. يسمح الاتساق النهائي (EC) بعدم الاتساق المؤقت للنسخ المتماثلة من أجل:- تأخير تسجيل منخفض (استقبال محلي)،
- توافر أفضل خلال فواصل الشبكة،
- القياس الأفقي.
المهمة الرئيسية هي الاتساق المتساهل المتحكم فيه: يرى المستخدم بيانات «جديدة إلى حد ما»، ويتم الحفاظ على ثوابت المجال، ويتم اكتشاف النزاعات وحلها بشكل متوقع.
2) نماذج الاتساق - ما نعد به العميل
قوي: القراءة ترى على الفور الإدخال الأخير.
Bounded stale/read-not-old-than (RNOT): اقرأ ليس أقدم من العلامة (LSN/version/time).
السببية: تحافظ على العلاقة «السببية» (من ألف إلى باء).
قراءة كتاباتك: يرى العميل تسجيلاته الأخيرة.
يقرأ Monotonic: كل قراءة تالية ليست «متراجعة».
الجلسة: مجموعة من الضمانات في جلسة واحدة.
في نهاية المطاف: إذا لم تكن هناك إدخالات جديدة، فإن جميع النسخ المتماثلة تتقارب.
الممارسة: دمج الجلسة + RNOT حول المسارات الحرجة والنهاية على واجهات المتاجر/المخابئ.
3) التكرار: الميكانيكا ومكافحة الإنتروبيا
متزامن (النصاب/RAFT): يعتبر السجل ناجحًا بعد تأكيده بواسطة عقد N ؛ الحد الأدنى من RPO، أعلى من p99.
غير متزامن: يلتزم القائد محليًا، ويوزع السجل لاحقًا ؛ زمن انتقال منخفض، RPO> 0.
فيزيائي (WAL/binlog): سريع ومتجانس.
المنطقي/CDC: تدفق تغيير مستوى الصف/الحدث، التوجيه المرن، المرشحات.
مكافحة الإنتروبيا: التوفيق والإصلاح الدوريان (أشجار ميركل، مقارنة التجزئة، إعادة مزامنة الخلفية).
4) معرفات النسخة وأوامر السببية
الإصدارات الأحادية: زيادة/LSN/epoch ؛ بسيطة، ولكن لا تشفر التوازي.
timestamp: ترتيب جزئي حسب الساعة المنطقية.
ساعة المتجه: تصلح الفروع المتوازية وتسمح لك باكتشاف التحديثات المتضاربة (المتزامنة).
Hybrid/TrueTime/Clock-SI: منطق «ليس قبل T» للنظام العالمي.
التوصية: فيما يتعلق بتحديثات CRDT/التضارب - الساعة المتجهة ؛ ل «ليس أكبر سنا» - LSN/GTID.
5) النزاعات: الاكتشاف والحل
الحالات النموذجية: التسجيل من منطقتين إلى نفس الجسم.
الاستراتيجيات:1. آخر انتصارات الكتابة (LWW) بساعة/طابع منطقي - بسيط، ولكن قد «يفقد» التحديثات.
2. دمج الدالات حسب منطق المجال:- حقول مضادة (G-Counter/PN-Counter)،
- يتم دمجها مع «المكاسب الإضافية/المكاسب»،
- المبالغ/الأرصدة - فقط من خلال مجلات المعاملات، وليس من خلال LWW بسيط.
- 3. CRDT (أنواع متقاربة): G-counter، OR-Set، LWW-Register، RGA للقوائم.
- 4. التحولات التشغيلية (نادرًا ما تكون لقواعد البيانات، وغالبًا ما تكون للمحررين).
- 5. الحل اليدوي: يتعارض في «صندوق الوارد»، يختار المستخدم الإصدار الصحيح.
القاعدة: يملي ثوابت المجال الاستراتيجية. بالنسبة للنقود/الأرصدة - تجنب LWW ؛ استخدام المعاملات/الأحداث التعويضية.
6) تسجيل الضمانات والخصوصية
المفاتيح الغبية على الأوامر (الدفع، السحب، الإنشاء) → إعادة المحاولة آمنة.
Inbox and outbox deuplication by idempotence key/serial number.
مرة واحدة بالضبط لا يمكن تحقيقها بدون أماكن عمل قوية ؛ ممارسة مرة واحدة على الأقل + الخصوصية.
نمط Outbox/Inbox: الكتابة إلى قاعدة البيانات ونشر الحدث ذري (معاملة محلية)، عمليات المتلقي حسب مفتاح الخصوصية.
7) لا تقرأ X الأكبر سنًا (RNOT)
الفنيون:- بوابة LSN/GTID: ينقل العميل الحد الأدنى من الإصدار (من رد الكتابة)، يرسل الموجه/الوكيل إلى النسخة المتماثلة التي لحقت بـ LSN ≥ X، وإلا - إلى القائد.
- محدد زمنيًا: «ليس أكبر من 2 ثانية» - SLA بسيط بدون إصدارات.
- تثبيت الجلسة: بعد تسجيل N ثانية، نقرأ فقط القائد (اقرأ كتاباتك).
8) تدفقات التغيير والتفاوض على المخابئ
حافلة أحداث → CDC (كافكا/بولسار) → المستهلكين (المخابئ والفهارس وواجهات المتاجر).
الإعاقة المخبأة: المواضيع 'مبطلة: {ns}: {id}' ؛ المعالجة الخفية.
إعادة البناء/الردم: إذا لم تكن متزامنة، أعد تجميع التوقعات من سجل الحدث.
9) الملاحم والتعويضات (المعاملات بين الخدمات)
وفي عالم الجماعة الأوروبية، تنقسم العمليات الطويلة الأجل إلى خطوات ذات إجراءات تعويضية:- التنسيق: يستدعي المنسق الخطوات وتعويضاتها.
- تصميم الرقصات: تتفاعل الخطوات مع الأحداث وتنشر ما يلي بنفسها.
الثوابت (مثال): «التوازن ≥ 0» - تحقق عند حدود الخطوة + التعويض عن الانحراف.
10) أقسام متعددة المناطق والشبكات
Local-writing, async-replicate: write to local region + deliver to other (EC).
المبارزة الجغرافية: البيانات «ملتصقة» بالمنطقة (زمن انتقال منخفض، صراعات أقل).
قواعد بيانات النصاب (الطوافة) للبيانات الخاصة بالبارافينات المكلورة ؛ المخابئ/واجهات المحلات - AP/EC.
خطة تقسيم الدماغ: إذا فقد الاتصال، تستمر المناطق في العمل ضمن حدود المجال (كتابة السياج، والحصص)، ثم التوفيق.
11) إمكانية الرصد و SLO
المقاييس:- تأخر نسخة طبق الأصل: الوقت/LSN-distance/offset (p50/p95/p99).
- الثبات: النسبة المئوية للردود التي تتجاوز العتبة (على سبيل المثال،> 2s أو LSN
- معدل الصراع: معدل النزاعات والاندماج الناجح.
- وقت التقارب: وقت التقارب للنسخ المتماثلة بعد الذروة.
- تسوية الأعمال المتراكمة: حجم/وقت الدفعات المتخلفة.
- المكتب الإقليمي لآسيا والمحيط الهادئ/المكتب الإقليمي للتكنولوجيا حسب فئة البيانات (CP/AP).
- تأخر> هدف، زيادة في النزاعات، نوافذ «طويلة» من عدم الجدوى.
12) تصميم مخطط بيانات المفوضية الأوروبية
نسخة/متجه صريح في كل مدخل (الأعمدة 'نسخة'، 'vc').
سجلات التذييل فقط للثوابت الحرجة (الأرصدة والمستحقات).
معرفات الأحداث (ندفة الثلج/ULID) للطلب والتفريغ.
الحقول التبادلية (العدادات والمجموعات) → مرشحي CRDT.
تصميم واجهة برمجة التطبيقات: ضع مع if-match/etag، PATCH بشرط مسبق.
13) أنماط التخزين والقراءة
اقرأ النموذج/CQRS: الكتابة إلى «المصدر»، والقراءة من الإسقاطات (قد تتخلف عن العرض → «محدث»...).
طرق Stale-OK (كتالوج/شريط) مقابل Strict (محفظة/حدود).
أعلام لاصقة/مقيدة في الطلب (رأس «تناسق قراءة x»).
14) قائمة التنفيذ المرجعية (0-45 يوما)
0-10 أيام
تصنيف البيانات: CP-critical (المال، الطلبات) مقابل EU/steel-OK (الكتالوجات، فهارس البحث).
تعريف Steele SLOs (على سبيل المثال «ليس أكبر من 2s»)، الهدف يتخلف.
تمكين إصدار الكائن ومفاتيح الخصوصية في واجهة برمجة التطبيقات.
11-25 يومًا
قم بتنفيذ طرق CDC و outbox/inbox، وذاكرة التخزين المؤقت للإعاقة.
أضف RNOT (بوابة LSN) وتثبيت الجلسة إلى مسارات الكتابة النقدية.
تنفيذ استراتيجية دمج واحدة على الأقل (LWW/CRDT/domain) وسجل النزاعات.
26-45 يومًا
أتمتة تقارير مكافحة الإنتروبيا (التسوية/الإصلاح) والتصميم.
قضاء يوم اللعبة: فصل الشبكة، زيادة النزاعات، التعافي.
تخيل على لوحات القيادة: التأخر، الصمود، معدل الصراع، التقارب.
15) الأنماط المضادة
LWW المكفوفين للثوابت الحرجة (خسارة المال/النقاط).
الافتقار إلى الخصوصية → تكرار العمليات أثناء إعادة التدريب.
النموذج «القوي» بشكل عام → ذيول مفرطة وهشاشة في حالة الفشل.
لا تضمن RNOT/Session → UX «يرمش» المستخدمون «لا يرون» تغييراتهم.
مخبأ مخفي واختلال مصدر (لا يوجد CDC/إعاقة).
عدم وجود أداة التوفيق/مكافحة الإنتروبيا - تختلف البيانات «لقرون».
16) مقاييس النضج
مستنسخة متأخرة p95 ≤ الهدف (على سبيل المثال، ≤ 500 مللي ثانية داخل المنطقة، ≤ 2 s بين المناطق).
يتم تنفيذ Staleness SLO ≥ 99٪ من الطلبات على الطرق «الصارمة».
نجاح تسوية النزاعات ≥ 99. 9٪، متوسط وقت الدقة ≤ 1 دقيقة.
وقت التقارب بعد الذروة - دقائق وليس ساعات.
100٪ من المعاملات «المالية» مشمولة بمفاتيح الخصوصية وصندوق الخروج/البريد الوارد.
17) وصفات (مقتطفات)
If-Match/ETag (HTTP)
PUT /profile/42
If-Match: "v17"
Body: { "email": "new@example.com" }
إذا تغير الإصدار - «فشل 412 شرط مسبق» → فإن العميل يحل الصراع.
استفسار «ليس أكبر من LSN» (زائف)
x-min-lsn: 16/B373F8D8
يختار جهاز التوجيه نسخة طبق الأصل مع "replay _ lsn ≥ x-min-lsn'، وإلا فهو القائد.
CRDT G-Counter (فكرة)
وتحتفظ كل منطقة بمكافحتها الخاصة ؛ المجموع - مجموع جميع مكونات النسخ المتماثل - العملية تبديلية.
18)
الاتساق النهائي ليس حل وسط للجودة، ولكنه عقد واعي: في مكان ما ندفع فيه النضارة من أجل السرعة والتوافر، لكننا نحمي الثوابت الحرجة باستراتيجيات وأدوات المجال. أدخل الإصدارات، والغباء، وضمانات RNOT/Session، ومركز السيطرة على الأمراض ومكافحة الإنتروبيا، وقياس التأخر/الصمود/الصراعات - وسيكون نظامك الموزع سريعًا ومستقرًا ويتقارب بشكل متوقع حتى تحت الثغرات وأحمال الذروة.