محتويات الدورة

Apache Spark / المتقدم: التدفق والتشغيل القابل للتعافي / الدرس 14

نقاط التحقق والوجهات ودلالات التسليم

اربط المدخل القابل للإعادة والتقدم الدائم ومنع تكرار الوجهة قبل ادعاء ضمان كامل.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

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

ينتمي ضمان التسليم للمسار كله

ينسق Structured Streaming التقدم التزايدي، لكن السلوك الكامل يعتمد أيضاً على مصدر قابل للإعادة ووجهة تدعم التثبيت المطلوب. لا يقدم مقبس الاختبار عقد التعافي نفسه لمصدر موثق قابل للإعادة. وقد تكرر وجهة تلحق كل طلب معاد النتائج رغم صحة استعادة نقطة Spark. سمِّ السيناريو: إعادة المشغّل أوفقد استجابة الوجهة أوانتهاء احتفاظ المصدر أوتغيير استعلام غير متوافق مسائل مختلفة. لا تصف كل تطبيق بأنه ينفذ مرة واحدة لمجرد وجود checkpointLocation.

عامل نقطة التحقق كحالة مملوكة للاستعلام

قد تحفظ نقطة التحقق تقدم الاستعلام وبيانات حالته اللازمة للاستئناف. استخدم موقعاً دائماً معتمداً مخصصاً للاستعلام، مع وصول ودورة حياة مناسبين. يوضح مقطع الباني موقعاً خيالياً ولا يبدأ استعلاماً. قد تدمر مشاركة النقطة بين استعلامات مستقلة أوحذفها كإصلاح اعتيادي افتراضات التعافي. ولتغييرات الاستعلام قيود توافق، خصوصاً مخططات عوامل الحالة وتغيير المصدر أوالوجهة. النقطة الجديدة تاريخ تعافٍ جديد قد يعيد البيانات؛ فتحتاج مطابقة مقصودة.

python مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
writer = (windowed.writeStream
    .outputMode('update')
    .option('checkpointLocation', 'lab-checkpoints/site-window-query-v1'))

باني كاتب فقط؛ لا يحدد وجهة ولا يستدعي start. المسار خيالي ولا يُوصل إلى تخزين.

تحتاج foreachBatch بروتوكولاً خارجياً يمنع تكرار الأثر

تقدم foreachBatch بيانات دفعة صغيرة ومعرّفها لمعالجة مخصصة. ضمان الكتابة الافتراضي مرة واحدة على الأقل، ما لم يستخدم التطبيق بروتوكولاً مناسباً لإزالة التكرار أوالمعاملات. لا يفيد معرّف الدفعة إلا ضمن هوية استعلام وتاريخ تعافٍ محددين؛ وقد يغير تصفير التحقق السياق. وإذا كتبت الدفعة لوجهتين مستقلتين، فلا يثبت نجاح إحداهما الأخرى ذرياً. احتفظ بنتيجة لكل وجهة وطابق الجزئي. وقد تضاعف إعادة UPDATE تراكمية المجاميع، بينما قد يتكرر استبدال مراجع بالمفتاح بأمان.

تميّز سجلات النتيجة المجهول من المرفوض

يصف الدفتر المحلي الاستعلام q1 والدفعة17 بنتيجة وجهة مجهولة بعد فقد استجابة. الخطوة الصحيحة مطابقة هوية العملية المخزنة، لا إلحاق الدفعة ثانية تلقائياً. قد تفقد علامة منع تكرار تكتب قبل الحمولة بيانات بعد الفشل، وقد تسمح المكتوبة بعدها بتكرار الحمولة. استخدم علاقة ذرية مدعومة بين العلامة والبيانات أوتصميماً آخر مثبتاً. JSON نموذج تعليمي لا تنفيذ عامل ولا ادعاء أن Spark يوفر الدفتر الخارجي آلياً.

json مثال تقني توضيحي؛ النتائج المنطقية مستنتجة ولم تُختبر على المحرك.
{"query_identity":"q1","batch_id":17,"operation_key":"q1:17","sink_outcome":"unknown","next_step":"reconcile persisted operation before replay"}

نموذج نتيجة محلي صحيح بلا وجهة خارجية ولا كتابة لوجهة.

تمرّن على الاستئناف بالاستعلام والوجهة نفسيهما

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

الأخطاء الشائعة وإصلاحها

تُعامل استجابة وجهة مفقودة كتراجع

لماذا يحدث؟
فقد العميل معرفة عملية ربما ثُبتت.
كيف تصلحه؟
طابق هوية العملية المخزنة قبل الإعادة.
كيف تتجنب تكراره؟
اختبر فقد إقرار التثبيت صراحة.

يكرر حذف التحقق التاريخ بصمت

لماذا يحدث؟
بدأ تاريخ تقدم جديد دون مطابقة الوجهة.
كيف تصلحه؟
راجع مواضع المصدر وهوية الاستعلام وسياسة الإعادة قبل التصفير.
كيف تتجنب تكراره؟
احمِ دورة حياة التحقق وملكية التعافي.

تفقد علامة منع تكرار مكتوبة مسبقاً الحمولة

لماذا يحدث؟
لم تُثبت العلامة والبيانات ذرياً.
كيف تصلحه؟
استخدم بروتوكولاً معاملاتياً مدعوماً أووجهة مثبتة تمنع التكرار.
كيف تتجنب تكراره؟
اختبر كل نافذة فشل بين العلامة والحمولة.

اختبر فهمك

1. ماذا تعني sink_outcome="unknown" لإعادة المحاولة؟

اعرض الحل المشروح

تعني وجوب معرفة النتيجة الدائمة قبل تقرير أمان الإعادة. ليست المهلة دليلاً على عدم الكتابة. استخدم هوية الاستعلام والعملية مع البروتوكول المعتمد، وأبقِ المجهول حتى حسمه بالمطابقة.

2. لماذا لا تكفي كتابة علامة معالجة الدفعة قبل البيانات؟

اعرض الحل المشروح

قد يجعل فشل بعد العلامة وقبل البيانات الإعادة تتخطى حمولة مفقودة. وعكس الترتيب قد يكررها بعد فشل آخر. تحتاج العلامة والأثر علاقة ذرية أومثبتة تمنع التكرار؛ الترتيب وحده لا يضمن ذلك.

أهم ما تعلمته

  • التحقق وذرية الوجهة الخارجية ضمانان مختلفان.
  • تحتاج النتائج المجهولة مطابقة لا إعادة عمياء.

المراجع الرسمية