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

Apache Kafka / المتقدم: المعالجة الذرية وتصميم التعافي / الدرس 15

Connect والمحولات والتقاط التغيرات

فصل مسؤوليات الموصل عن بيئة العامل والتسلسل وضمانات الأنظمة الخارجية.

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

أهداف الدرس

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

للإطار والإضافة عقدان مختلفان

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

المحول ليس الموصل نفسه

للسجلات داخل Connect نموذج بيانات تحوله المحولات من بايتات المفاتيح والقيم أو إليها. تغير خيارات مخطط محول JSON الغلاف المتوقع؛ فقد يفشل قارئ JSON عادي أمام خرج يتضمن مخططاً رغم قول الطرفين JSON. يختار محول المفتاح والقيمة منفصلين. تعدل Single Message Transforms سجلات فردية، ولا ينبغي اعتبارها محرك معاملات متعدد السجلات أو بديلاً للمعالجة المعقدة. سجل إصدار الإضافة والمحولات وتوقعات المخطط معاً عند مراجعة نشر أو تشخيص حادث تسلسل.

فحص غلاف تدريبي يتضمن مخططاً

يمثل المثال غلاف JSON بسيطاً بأسلوب Connect يضم schema وpayload. ليس صيغة عامة لكل الموصلات ولا إعداد موصل كاملاً. يفشل قارئ يتوقع id في المستوى الأعلى في العثور عليه. وقد يؤدي حذف الغلاف دون مراجعة المحول إلى فقد معلومات نوع يحتاجها موصل الوجهة. يستخدم المثال حقلاً صحيحاً صغيراً لإظهار الفرق. قد تتضمن السجلات الحقيقية أنواعاً منطقية وبنى متداخلة وقابلية null، ويجب أن يتبع تمثيلها توثيق المحول وإضافة المصدر المختارين.

json غلاف JSON اصطناعي يتضمن مخططاً
{"schema":{"type":"struct","fields":[{"field":"id","type":"int32","optional":false}],"optional":false},"payload":{"id":17}}

يقع id داخل payload؛ ويحدد إعداد المحول توقع الغلاف.

تحتاج اللقطة وتدفق التغيرات حداً مشتركاً

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

فصل تقدم المصدر عن إحداثيات Kafka

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

python تمييز محلي لتقدم المصدر والوجهة
progress = {'source_position': 'lab-log:204', 'kafka': {'topic': 'lab-changes', 'partition': 0, 'offset': 17}}
assert progress['source_position'] == 'lab-log:204'
assert progress['kafka']['offset'] == 17
print(progress['source_position'], progress['kafka']['offset'])
الناتج المتوقع
lab-log:204 17

يستخدم الموضعان بروتوكولين مختلفين ولا يحل أحدهما محل الآخر.

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

رفض الوجهة سجل JSON بغلاف غير متوقع.

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

عدم ظهور مهام إضافية بعد زيادة tasks.max.

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

تعذر استئناف الموصل من موضع المصدر القديم.

لماذا يحدث؟
احتمال انتهاء التغطية اللازمة لسجل المصدر.
كيف تصلحه؟
اتبع إجراء التعافي المدعوم وصالح التغطية.
كيف تتجنب تكراره؟
راقب احتفاظ سجل المصدر مقابل أطول انقطاع متوقع.

اختبر فهمك

1. هل تثبت مهمة RUNNING معالجة اللوحة لكل التغيرات الحالية؟

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

لا؛ تصف حالة المهمة لا حداثة المسار التجاري. قد يتأخر المصدر أو تعيد المهمة المحاولات أو تنتظر المخرجات القراءة أو تتأخر الوجهة. قارن موضع المصدر وتقدم Kafka واكتمال الوجهة بأزمنة متزامنة وتعريفات مقاييس صريحة.

2. لماذا قد لا يصلح موضوع تغيرات الصفوف واجهة أحداث تجارية مستقرة؟

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

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

أهم ما تعلمته

  • تختلف مسؤوليات الموصل والعامل والمحول.
  • تحتاج تغطية المصدر وآثار الوجهة أدلة تعاف مستقلة.

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