Apache Kafka / الأساسي: السجلات والأقسام وتقدم القارئ / الدرس 5
الإزاحات والتثبيت وإعادة التشغيل
تسجيل الموضع الآمن التالي وتحليل التعطل قبل إعادة ضبط أي قارئ.
في هذه الصفحة
أهداف الدرس
- التمييز بين الموضع الحالي والمعالجة المكتملة والموضع المثبت.
- شرح إعادة التشغيل مرة واحدة على الأقل وسياسة إعادة الضبط.
قد تختلف ثلاثة مواضع
يصف موضع المستهلك الحالي نقطة الجلب اللاحق وفق سلوك العميل. قد تتأخر الأعمال التجارية المكتملة عن السجلات المجلوبة، ويسجل الموضع المثبت نقطة استئناف المجموعة. هذه حقائق مختلفة. يثبت Kafka الإزاحة التالية للقراءة؛ لذا يعني إكمال السجل 41 بأمان أن الموضع التالي 42، بشرط اكتمال ما قبله. لا يحذف التثبيت السجل ولا يمنع مجموعة أخرى من قراءته. احفظ التقدم لكل قسم؛ فلا يصف عدد واحد للموضوع تواريخ الأقسام المستقلة أو الأعمال المعلقة بدقة.
تثبيت الجزء المتصل المكتمل فقط
أكمل النموذج المحلي الإزاحتين 10 و12 وبقيت 11 معلقة. ابتداءً من 10 يتوقف موضع الاستئناف الآمن عند 11. يؤدي تثبيت 13 لمجرد أنه يلي أكبر إزاحة مكتملة إلى تجاوز 11 بعد التعطل. يظهر ذلك مع عمال يعالجون دفعة بالتوازي؛ فأكبر إزاحة مكتملة ليست الجزء المتصل المكتمل. يفترض النموذج أن الأرقام المعطاة هي تسلسل التسليم؛ وقد تتضمن إزاحات Kafka فجوات، لذا يجب تتبع السجلات المسلمة وبيانات العميل دون اشتراط وجود كل عدد صحيح.
delivered = [10, 11, 12]
completed = {10, 12}
next_safe = 10
for offset in delivered:
if offset not in completed:
break
next_safe = offset + 1
assert next_safe == 11
print(next_safe)
11
تمنع الفجوة عند 11 تثبيت 13؛ ويفترض المثال تسلسلاً متصلاً للسجلات المسلمة.
وضع التعطل حول الأثر الخارجي
إذا اكتمل العمل قبل التثبيت ثم تعطلت العملية بينهما، فقد يتكرر العمل. وإذا سبق التثبيت العمل ثم حدث التعطل، فقد يتخطى الاستئناف ذلك العمل. تختار معالجة مرة واحدة على الأقل الخطر الأول وتحتاج أثراً يتحمل التكرار. لا تجعل commitSync ولا آلية التثبيت التلقائي الدفع الخارجي أو تحديث قاعدة البيانات ذرياً مع إزاحة Kafka. تحتاج الأنظمة الخارجية تصميماً خاصاً للمعاملات أو إزالة التكرار. وضح نافذة التعطل بدقة قبل وعد المستدعي بدلالات التسليم، خصوصاً عندما لا يمكن التراجع عن الفعل الخارجي.
سياسة الضبط لا تتجاوز تثبيتاً صالحاً
تستخدم auto.offset.reset عند غياب موضع مثبت صالح أو خروجه عن النطاق وفق قواعد العميل. لا تجبر earliest كل إعادة تشغيل على البدء من البداية إذا وجد تثبيت صالح. قد يزيل الاحتفاظ البداية القديمة، فتشير earliest إلى أقدم موضع متاح حالياً لا بداية التاريخ كله. تستخدم خطة إعادة تشغيل مدروسة مجموعة مستقلة أو تغييراً مصرحاً للإزاحة، وتفحص تحمل الوجهة للتكرار ومدى تغطية التاريخ. لا ينفذ هذا الدرس أمراً لإعادة الضبط ولا يغير مجموعة؛ يوضح الجزء معنى الإعداد فقط.
enable.auto.commit=false
auto.offset.reset=earliest
تمثل earliest حلاً عند غياب موضع مثبت صالح، لا إعداداً يفرض الإعادة.
جعل إعادة التشغيل مرئية ومحدودة
حدد قبل الإعادة نطاق العمل والموضوع والأقسام والإزاحات المتاحة، ثم قرر مقارنة النتيجة بالإسقاط الحالي. ميز عدد السجلات الخام عن عدد الأحداث التجارية الفريدة لأن التكرار والتصفية يغيران الإجماليات. سجل حد توقف حتى لا تصبح اللحاق بالبيانات عملية غامضة بلا نهاية. قد تجعل مخططات الأحداث القديمة وقواعد العمل المتغيرة الإعادة مختلفة عن القراءة الحية. يمكن لتحويل جاف على بيانات اصطناعية التحقق من المنطق، لكنه لا يثبت تغطية الاحتفاظ الفعلية أو صحة خدمات الوجهة.
الأخطاء الشائعة وإصلاحها
تثبيت آخر إزاحة معالجة بدلاً من الموضع التالي.
- لماذا يحدث؟
- سوء فهم اتفاقية موضع الاستئناف.
- كيف تصلحه؟
- ثبت الموضع الآمن التالي بعد الجزء المسلم المكتمل.
- كيف تتجنب تكراره؟
- اختبر تسلسلاً دقيقاً للتعطل والاستئناف.
عدم ظهور أثر لتغيير earliest.
- لماذا يحدث؟
- وجود موضع مثبت صالح للمجموعة.
- كيف تصلحه؟
- راجع خطة الإعادة المقصودة بدلاً من تغيير إعدادات غير مرتبطة.
- كيف تتجنب تكراره؟
- افصل سياسة البدء الأول عن إجراءات الإعادة.
اختفاء سجل غير مكتمل بعد الاستئناف.
- لماذا يحدث؟
- تجاوز التثبيت عملاً متزامناً غير مكتمل.
- كيف تصلحه؟
- تتبع الجزء المسلم المكتمل لكل قسم.
- كيف تتجنب تكراره؟
- أدرج ترتيب الإقرار في تصميم العمال.
اختبر فهمك
1. اكتملت 20 و21 ولم تكتمل 22؛ ما الموضع التالي الآمن؟
اعرض الحل المشروح
الموضع الآمن 22 وفق تسلسل التسليم المعلن. تثبيت 23 يدعي اكتمال السجل المعلق. يبدأ الاستئناف من 22 لإعادة العمل غير المكتمل مع حفظ التقدم السابق. إذا احتمل حدوث أثر خارجي للسجل 22 بالفعل، فيجب أن تحمي معالجة التكرار هذه النتيجة غير المؤكدة.
2. هل يستعيد الموضع المثبت سجلات حذفها الاحتفاظ؟
اعرض الحل المشروح
لا؛ فالتثبيت موضع وليس نسخة من بيانات السجلات. إذا لم يعد صالحاً فقد تطبق سياسة إعادة الضبط أو يبلغ العميل بمشكلة. يحتاج التعافي تاريخاً متاحاً أو نسخة مستقلة، مع قرار واضح بشأن التغطية المفقودة.
أهم ما تعلمته
- ثبت الموضع الآمن التالي لكل قسم.
- تكرر الإعادة الآثار التجارية ما لم تتحمل الوجهة التكرار.