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

Apache Airflow / المتوسط: عمل التشغيل والتحكم وميزانيات الموارد / الدرس 11

الأحواض والتزامن والضغط العكسي

تحديد قبول المهام وفق المورد المحمي وتمييز أهلية الجدولة من سعة العمال.

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

أهداف الدرس

  • شرح خانات الأحواض وتزامن المهام وحدود التشغيلات النشطة.
  • تشخيص العمل المنتظر دون زيادة عامة للإعدادات.

يعبر الحوض عن ميزانية قبول مشتركة

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

قد تمنع العمل حدود مستقلة عدة

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

حساب تخصيص حوض موزون محلياً

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

python ميزانية خانات موزونة محلية
pool_total = 4
occupied_weights = [2, 1, 1]
free = pool_total - sum(occupied_weights)
assert free == 0
assert 1 > free
assert 5 > pool_total
print(free)
الناتج المتوقع
0

الحوض ممتلئ ولا يتسع طلب خمس خانات في إجمالي أربع وفق السياسة.

فصل وزن الجدولة عن ضمانات التشغيل

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

json سجل سياسة حوض اصطناعي
{"pool":"lab-reporting-budget","total_slots":4,"heavy_task_slots":2,"light_task_slots":1,"include_deferred":"review-explicitly"}

هذه بيانات توثيق لا طلب إدارة Airflow أو إعداداً مختبراً.

اعتبار الانتظار إشارة لا خللاً تلقائياً

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

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

انتظار مهمة خمس خانات في حوض أربع إلى الأبد.

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

عدم تحرير صف الحوض بعد زيادة العمال.

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

تسبب إزالة الحد مهلاً ومحاولات في الوجهة.

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

اختبر فهمك

1. هل تتيح زيادة الأولوية بدء مهمة في حوض لا توجد فيه خانات حرة؟

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

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

2. لماذا يجب مراجعة عشرة استدعاءات بعيدة متوازية داخل مهمة تحسب بخانة واحدة؟

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

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

أهم ما تعلمته

  • ميزانيات القبول وسعة العمال حدود منفصلة.
  • يجب أن يحمي الضغط العكسي عقد مورد مقاساً.

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