GH GambleHub

التوافق المتخلف

ما هو التوافق المتخلف

التوافق الخلفي - خاصية النظام لقبول ومعالجة العملاء/المستهلكين القدامى بشكل صحيح عند تحديث النظام. أبسط: يمكنك إصدار إصدار جديد من الخدمة/الأحداث، وتستمر عمليات التكامل الحالية في العمل دون تغيير.

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

المبادئ الأساسية

1. مادة مضافة أولاً

تتم إضافة مجالات/طرق/أحداث جديدة بشكل اختياري. لم يتم إزالة أي شيء موجود ولا يغير المعنى.

2. عقد الضمان الأدنى (MGC)

حدد نواة - مجموعة من الحقول/العمليات التي بدونها يفقد النص معناه. اللب مستقر. كل شيء آخر هو امتدادات.

3. قارئ متسامح

يتجاهل العملاء المجالات غير المعروفة ويتعاملون بشكل صحيح مع القيم الجديدة (الاحتياطية).

4. سياسة الإصدارات

كسر التغييرات - فقط من خلال السطر الرئيسي ("/v2 "،" المدفوعات. v2 '،' حدث. v2 '). طفيفة - مضافة.

5. قابلية الملاحظة - جزء من العقد

وتظهر نسخة العميل وشكله وأعلام قدراته في السجلات/المسارات والمقاييس. هذا يسمح لك بإدارة هجرتك.

تغييرات آمنة مقابل خطيرة

آمن بشكل عام (BC-OK)

إضافة حقول اختيارية (JSON/Avro/Protobuf 'اختياري '/' غير قابل للإلغاء').
أضف نقاط نهاية/طرق/أحداث جديدة.
امتداد Enum مع قيم إضافية (مع قارئ متسامح).
إضعاف المصادقة (التعظيم، إضافة الأشكال البديلة).
أضف رؤوس/بيانات وصفية غير ذات مغزى.

خطير (كسر)

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

بواسطة أنماط التفاعل

REST/HTTP + JSON

الإضافة: حقول جديدة - «اختياري»، الخادم لا يتطلب منهم من العملاء القدامى.
النسخ: الرئيسية - في النقل العابر ('/v2 ') أو نوع الوسائط ؛ طفيفة - من خلال التمديدات و '؟ تشمل = '/' ؟ الحقول = '.
الأخطاء: الشكل الموحد ؛ لا تغير الرموز/الدلالات بدون التخصص.
ETag/If-Match: للحصول على تحديثات آمنة بدون سباق.
الخصوصية: «Idempotency-Key» لـ POST - العملاء القدامى لا «يضاعفون» التأثير على الخلوات.

gRPC/Protobuf

العلامات لم تتغير. لا يمكن إعادة استخدام العلامات المحذوفة.
مجالات جديدة - 'اختياري '/' متكرر' ؛ يتم التعامل مع القيم الافتراضية بشكل صحيح بواسطة الشفرة القديمة.
البث: لا تغير ترتيب/التزام الرسائل داخل القاصر.
الأخطاء - مجموعة مستقرة من الحالات ؛ دلالات جديدة → طريقة/خدمة جديدة ('.v2').

الحدث مدفوع (كافكا/ناتس/بولسار) + أفرو/جسون/بروتو

التسمية: 'المجال. العمل. v {major} '.
Core vs Enriched: core stable; الإثراء - أنواع/مواضيع فردية ('.
نمط توافق المخطط: في أغلب الأحيان إلى الوراء ؛ يحجب CI التغييرات غير المتوافقة.
التقسيم: المفتاح (على سبيل المثال، 'الدفع - الهوية') - جزء من العقد ؛ غيره - كسر.

الرسم البياني QL

إضافة الحقول/الأنواع - حسنًا ؛ حذف/إعادة تسمية - عبر «@ decrecated» ونافذة الهجرة.
لا تثير «لا يمكن إبطاله → لا يمكن إبطاله» بدون تخصص.
رصد التعقيد/العمق - الحد من التغيير = تغيير العقد.

أنماط للمساعدة في الحفاظ على كولومبيا البريطانية

نموذج الهرم العكسي: تثبيت اللب، والتوسع اختياريًا.
التفاوض على القدرات: تدعم تقارير العملاء القدرات ('X-Factions '/handshake)، ويعدل الخادم.
ثنائي التشغيل/ثنائي الانبعاث: حافظ على 'v1' و 'v2' في نفس الوقت أثناء الهجرة.
المحولات: تترجم الوكلاء/البوابات طلبات «v1↔v2» للعملاء «الثقيلين».
التوسيع والعقد (بالنسبة لـ DB): أولاً أضف واحدة جديدة، ابدأ الكتابة/القراءة، ثم احذف القديمة فقط.

الحوكمة والعملية

1. كتالوج العقود (Schema Registry): مصدر واحد للحقيقة مع سياسات التوافق.
2. بطانات وفحوصات diff في CI/CD: OpenAPI-diff، Buf-breaking، Avro/JSON Schema التحقق من التوافق.
3. CDC/العقود التي يحركها المستهلك: يتم اختبار المزود لعقود المستهلك الحقيقية.
4. العينات الذهبية: الاستفسارات المرجعية/الردود/الأحداث من أجل الانحدار.
5. إدارة التغيير: RFC/ADR حول الانهيار، خطط غروب الشمس، الاتصال.

نقض وإزالة الإصدارات القديمة

مارك عفا عليه الزمن ("@ decrecated"، الأوصاف، الرؤوس "Deprecation"، "Sunset').
نافذة الهجرة: تاريخ معلن مسبقًا، مقعد اختبار، أمثلة رمزية.
القياس عن بعد للاستخدام: من أيضًا موجود في v1 ؟ مقاييس/سجلات القطاعات حسب النسخة.
ثنائي التشغيل إلى صفر حركة المرور، ثم حذف.

إمكانية الرصد والمقاييس التشغيلية

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

اختبار التوافق الخلفي

Schema-diff: فشل при إزالة/إعادة تسمية/تغيير النوع.
اختبارات العقد: تتسابق SDKs/العملاء القدامى ضد التنفيذ الجديد.
E2E canary: جزء من حركة المرور القديمة إلى الإصدار الجديد، مقارنة p95/p99، الرموز، retrays.
إعادة تشغيل الحدث: يتم جمع التوقعات بمنطق جديد من السجل القديم دون تناقضات.
حقن الأخطاء: التأخير/الاستجابات الجزئية - لا يسقط العملاء القدامى.

أمثلة

REST (مضاف)

كان:
json
{ "id": "p1", "status": "authorized" }
أصبح:
json
{ "id": "p1", "status": "authorized", "risk_score": 0. 12 }

العملاء القدامى، الذين يتجاهلون «النتيجة الخطرة»، يواصلون العمل.

Protobuf (علامات)

proto message Payment {
string id = 1;
string status = 2;
optional double risk_score = 3 ;//new field, safe
}
//Tags 1 and 2 cannot be changed/deleted without v2

الأحداث (الأساسية + الإثراء)

الدفع. المأذون به. v1 '- نواة (الحد الأدنى من الحقائق).
الدفع. إثراء. v1 '- أجزاء ؛ ولا يعتمد المستهلكون الأساسيون على الإثراء.

Antipatterns

غسل التبجح: تم تحديث المخطط، لكن الخدمة تتصرف بالطريقة القديمة (أو العكس).
الفواصل الخفية: غيرت معنى المجال/الحالة بدون نسخة.
إعادة استخدام علامات protobuf: فساد البيانات «الهادئ».
العملاء الصعبون: يقعون في ميادين غير مألوفة/إنوم ؛ لا قارئ متسامح.
نقطة النهاية الضخمة: واحد في واحد - أي تغيير يصبح خردة محتملة.

القائمة المرجعية السابقة للإفراج

  • التغييرات مضافة ؛ النواة (MGC) لم تمس.
  • مرت فحوصات البطانات/diff ؛ لا توجد أعلام مكسورة.
  • تم تحديث العملاء SDKs (أو غير مطلوبة لتوسيع المادة المضافة).
  • تمكين القارئ المتسامح للعملاء ؛ فحص احتياطي enum.
  • تحتوي المقاييس/السجلات على أعلام النسخ والقدرات.
  • بالنسبة للكسر المحتمل، هناك خطة «/v2 »ومزدوجة التشغيل وغروب الشمس.
  • تم تحديث الوثائق/الأمثلة، وهناك مجموعات ذهبية.

الأسئلة الشائعة

إلى الأمام مقابل إلى الأمام - ما الفرق ؟

إلى الوراء - تعمل الخوادم الجديدة مع العملاء القدامى. إلى الأمام - يعمل العملاء الجدد بشكل صحيح مع الخوادم القديمة (بسبب القارئ المتسامح والتخلف عن السداد الأنيق). دائرة كاملة - التوافق الكامل.

هل أحتاج دائمًا إلى القيام بـ «/v2 »لإجراء تغييرات كبيرة ؟

نعم، إذا تعطلت الثوابت/الأنواع/المفاتيح/الدلالات. خلاف ذلك، احتفظ بالخط وتطور بشكل إضافي.

ماذا عن (إينوم) ؟

أضف قيمًا جديدة دون تغيير معنى القيم القديمة. يجب أن يكون لدى العملاء احتياطي بقيمة غير معروفة.

ماذا لو كنت قد «كسرت» بالفعل ؟

Relback، محول الإصلاح الساخن، إصدار «v2» مع دليل اتصال وهجرة مزدوج التشغيل.

المجموع

التوافق الخلفي هو نظام التطور: تثبيت النواة، والتوسع بشكل إضافي، وتنفيذ قارئ متسامح، وأتمتة الفحوصات والحفاظ على الاستنكار الواعي. بهذه الطريقة يمكنك تطوير المنصة بسرعة دون ترك العملاء تحت أنقاض التغييرات «غير المرئية».

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.