Apache Kafka / المتقدم: المعالجة الذرية وتصميم التعافي / الدرس 18
التعافي والترقيات والإعادة بين العناقيد
بناء خطة تعاف تميز البيانات المحتفظ بها وتوافق البيانات الوصفية وصحة الوجهة.
في هذه الصفحة
أهداف الدرس
- شرح نقطة التعافي وزمنه بأدلة قابلة للقياس.
- مراجعة انتقال الإصدارات وربط الهوية بين العناقيد.
تحديد ما تجب استعادته
يحدد هدف نقطة التعافي التاريخ التجاري المسموح بفقده، ويحدد هدف زمن التعافي مدة بقاء الخدمة دون السلوك المطلوب. ليس العنقود الحي المنسوخ نسخة مستقلة تلقائياً ضد خطأ مشغل أو فساد منطقي أو فقد نطاق كامل. حدد الموضوعات والإعدادات والمخططات وهويات التطبيق وحالة الوجهة اللازمة. قد تبقى الخدمة معطلة بعد استعادة البايتات إذا غاب قارئ متوافق أو اعتماد. وبالمقابل لا يمثل تشغيل عملية مع تجاوز أحداث العمل تعافياً ناجحاً. حدد سيناريو قبول صغيراً قابلاً للرصد قبل اختيار الآلية.
إصدار البرنامج والميزات النهائية مختلفان
تحتاج الترقية خطة خاصة بالإصدار تشمل برنامج الوسيط وتوافق العملاء ومستويات البيانات الوصفية والميزات. قد تختلف آثار التراجع بين نشر الملفات الثنائية وتثبيت مستوى ميزة نهائياً. أزالت سلسلة 4.x وضع ZooKeeper، فتحتاج العناقيد القديمة ترحيلاً مدعوماً قبل دخولها. تصف وثائق 4.1 عضوية المتحكم الديناميكية وحدود ميزتها؛ فلا تنقلها إلى نصاب أقدم. يختار المقرر 4.1 للتعليم ولا يصفه بالأحدث أو المدعوم حالياً. راجع مسار الترقية والقيود قبل أي تشغيل مصرح منفصل.
تتغير الإحداثيات عند نسخ السجلات
قد يأخذ السجل المنسوخ إزاحة واسم موضوع مختلفين في العنقود الآخر. لذلك لا تصبح إحداثيات المصدر موضع seek صالحاً تلقائياً في الوجهة. قد توفر أدوات النسخ ترجمة إزاحات وفق سياساتها، لكن يجب التحقق منها للبنية وخطة التحول المحددتين. احفظ هوية الحدث التجاري لتمييز التكرار بين المسار الأصلي والمنسوخ. قد تضيف حلقات النسخ والكتابات المتزامنة مشاكل هوية وترتيب. لا يثبت الوصول للعنقود البديل اكتمال التغطية أو استئناف المستهلك عند حد العمل الصحيح.
إنشاء ربط صريح بين المصدر والوجهة
يربط المثال إحداثيات مصدر معلنة بإحداثيات وجهة مختلفة ويحفظ معرف الحدث. يثبت فصل التمثيل فقط؛ ولا ينفذ ترجمة MirrorMaker أو يعتمد التحول. يحسب المثال الحسابي الآخر فترة تعاف من الكشف والاستعادة والتحقق. التحقق جزء من زمن التعافي، لا عمل اختياري بعد إعلان النجاح. أدرج تصريف الإعادة ومصالحة الوجهة إذا لزما لاستعادة الخدمة للمستخدم. قد تقلل خطة تنتهي بتشغيل الوسطاء تقدير الانقطاع الفعلي كثيراً.
record = {'event_id': 'evt-101', 'source': ('parcels', 0, 17), 'destination': ('mirror.parcels', 0, 24)}
assert record['source'] != record['destination']
assert record['event_id'] == 'evt-101'
print(record['source'][2], record['destination'][2])
17 24
الربط بيانات اصطناعية معطاة وليس اختبار نسخ أو ترجمة إزاحات.
detect_min = 2
restore_min = 8
verify_min = 3
recovery_min = detect_min + restore_min + verify_min
assert recovery_min == 13
print(recovery_min)
13
تشمل الميزانية المعلنة التحقق ولا تتنبأ بانقطاع حقيقي.
التحقق من التغطية والسلوك قبل النجاح
تقارن مراجعة التعافي الأحداث التجارية الفريدة والإسقاطات والنطاقات المحتفظ بها والفجوات المقبولة صراحة. أدرج حدثاً قبل حد الحادث وآخر عنده وثالثاً بعد الاستعادة. أكد تحمل التكرار عند عودة الحركة الأصلية، ثم افحص شروط التراجع أو العودة الموثقة. احفظ دليل الإصدارات ومستويات الميزات مع النتيجة. لا تنفذ هذه الإجراءات هنا؛ فلا إعادة وسيط أو تهيئة تخزين أو ترحيل أو نسخ أو أمر إدارة. تختبر حسابات الإحداثيات والزمن المعزولة فقط، وتبقى جاهزية التعافي الحي لبيئة مصرح بها مستقلة.
الأخطاء الشائعة وإصلاحها
استخدام إزاحات المصدر مباشرة في موضوع منسوخ.
- لماذا يحدث؟
- افتراض ثبات الإحداثيات بين العناقيد.
- كيف تصلحه؟
- استخدم ترجمة مدعومة متحققة وصالح التغطية.
- كيف تتجنب تكراره؟
- افصل هوية الحدث عن موضع السجل.
افتراض إمكان التراجع بعد كل تغيير ميزة.
- لماذا يحدث؟
- الخلط بين نشر البرنامج وحدود تثبيت الميزات.
- كيف تصلحه؟
- راجع قيود التراجع الخاصة بالإصدار قبل التثبيت.
- كيف تتجنب تكراره؟
- سجل مستويات البرنامج والبيانات والميزات منفصلة.
إعلان التعافي قبل مصالحة الوجهة.
- لماذا يحدث؟
- استبدال قبول العمل بإتاحة العملية.
- كيف تصلحه؟
- تحقق من التغطية والتكرار والإسقاطات المتوقعة.
- كيف تتجنب تكراره؟
- أدرج تحقق القبول في ميزانية زمن التعافي.
اختبر فهمك
1. هل يوفر عنقود ثان حي نقطة تعاف بلا فقد تلقائياً؟
اعرض الحل المشروح
لا؛ فقد يترك تأخر النسخ والموضوعات المستبعدة وأعطال المصدر وسياسة الترجمة فجوات. قس التغطية وصالح الأحداث الفريدة عند حد التحول. يجب أن يحدد الهدف الفقد المقبول ودليله، لا أن يستنتج انعدام الفقد من وجود نقطة اتصال أخرى.
2. لماذا يحتفظ تمرين التعافي بدليل مستويات الميزات؟
اعرض الحل المشروح
قد يعتمد السلوك والتراجع الميزات النهائية إضافة إلى البرنامج. دون الدليل قد يطبق مشغل النتيجة على حالة غير متوافقة. سجل الإصدارات والحدود وسيناريو القبول المختبر والقيود غير المختبرة لتبقى النتيجة قابلة للمراجعة.
أهم ما تعلمته
- يتطلب نجاح التعافي تغطية العمل وسلوكاً متحققاً.
- يجب إبقاء حدود الإصدار والميزات والإحداثيات صريحة.