0Pricing
Cloud & IT Cert Prep · درس

التزامن والتقييد والتزامن المحجوز

تعرّفوا إلى كيفية توسّع Lambda بالتزامن، واضبطوا التزامن المحجوز لحماية الخدمات التابعة، وتعاملوا مع أخطاء التقييد.

التزامن والتقييد والتزامن المحجوز درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

كيفية التوسع المتزامن في Lambda

تتوسع Lambda بتشغيل عدة عمليات تنفيذ متزامنة لدالتك—واحدة لكل حدث متزامن. عندما تصل 100 طلب في الوقت نفسه، تشغّل Lambda 100 مثيل متوازٍ من دالتك. تدير AWS البنية التحتية الأساسية تلقائياً. يبلغ حد التزامن على مستوى الحساب 1,000 عملية تنفيذ متزامنة لكل Region افتراضياً (حد مرن يمكن زيادته عبر طلب حصة خدمة).

حساب التزامن

يُحسب التزامن كما يلي: التزامن = الطلبات في الثانية × متوسط المدة بالثواني. إذا كانت دالتك تعالج 500 طلب/ثانية ويستغرق كل طلب 0.2 ثانية، فستحتاج إلى 100 عملية تنفيذ متزامنة. يساعدك فهم هذه الصيغة على توقّع ما إذا كانت حدود حسابك كافية وما إذا كنت تحتاج إلى طلب زيادة الحصة قبل حدث ذي حركة مرور مرتفعة.

# Example concurrency calculation
# RPS = 500, avg_duration = 0.2s
# Concurrency = 500 * 0.2 = 100

# To check current concurrency limits:
aws lambda get-account-settings

الخنق: ما يحدث عند بلوغ الحدود

عندما تتلقى Lambda طلبات أكثر مما يسمح به حد التزامن، فإنها تخنق الطلبات الزائدة. بالنسبة إلى الاستدعاءات المتزامنة (مثل API Gateway)، تتلقى الطلبات المخنوقة فوراً 429 TooManyRequestsException يجب أن يعالجه المستدعي. أما الاستدعاءات غير المتزامنة (مثل أحداث S3)، فتضع Lambda الأحداث في قائمة انتظار وتعيد المحاولة لمدة تصل إلى 6 ساعات قبل إرسالها إلى قائمة انتظار الرسائل غير القابلة للتسليم.

شرح التزامن المحجوز

يضمن التزامن المحجوز عدداً محدداً من عمليات التنفيذ المتزامنة لدالة معينة، عبر حجزها من مجموعة الحساب. وله غرضان: (1) يضمن السعة—إذ تتوفر للدالة دائماً عمليات التنفيذ بهذا العدد، حتى إن كانت الدوال الأخرى تستهلك حصة الحساب؛ (2) يحدّ التزامن—إذ لا يمكن للدالة أن تتجاوز المقدار المحجوز، مما يحمي التبعيات اللاحقة من التحميل الزائد.

# Reserve 100 concurrent executions for a critical function
aws lambda put-function-concurrency \
  --function-name 'CriticalProcessor' \
  --reserved-concurrent-executions 100

حماية الخدمات اللاحقة بالتزامن المحجوز

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

التزامن الموفَّر لإزالة البدء البارد

يقوم التزامن الموفَّر بتهيئة عدد محدد مسبقاً من بيئات تنفيذ Lambda، لتكون جاهزة للاستجابة فوراً من دون بدء بارد. وهذا مهم للغاية لواجهات API الحساسة لزمن الاستجابة، حيث يكون حتى البدء البارد بمقدار 100ms غير مقبول. تدفع رسوماً بالساعة مقابل التزامن الموفَّر حتى عندما تكون تلك البيئات خاملة، لذا ادمجه مع Auto Scaling لضبط المستويات الموفرة وفقاً لأنماط حركة المرور المتوقعة.

aws lambda put-provisioned-concurrency-config \
  --function-name 'LatencySensitiveAPI' \
  --qualifier 'prod' \
  --provisioned-concurrent-executions 50

التزامن المحجوز مقابل التزامن الموفَّر

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

حدود الاندفاع والتوسع الأولي

لا تتوسع Lambda إلى التزامن الكامل بشكل فوري. يوجد حد اندفاع على مستوى الحساب (معدل التوسع الأولي) يختلف حسب Region—ويبلغ عادةً اندفاعاً أولياً قدره 3,000، ثم 500 عملية تنفيذ إضافية في الدقيقة حتى بلوغ الحد. بالنسبة إلى التطبيقات التي تتوقع ارتفاعات مفاجئة وكبيرة جداً، مثل الزيارات الفيروسية أو التخفيضات السريعة، استخدم Provisioned Concurrency لتهيئة عدد كافٍ من البيئات مسبقاً، حتى لا يسبب حد الاندفاع خنقاً أثناء الزيادة الأولية.

مقاييس التزامن في Lambda ضمن CloudWatch

راقب التزامن في Lambda باستخدام مقاييس CloudWatch الأساسية التالية:

  • ConcurrentExecutions: العدد الحالي للمثيلات قيد التشغيل
  • Throttles: عدد الاستدعاءات المخنوقة (ينبغي أن يكون صفراً في نظام سليم)
  • UnreservedConcurrentExecutions: المجموعة غير المحجوزة على مستوى الحساب
  • ProvisionedConcurrencyUtilization: مقدار السعة الموفرة المستخدمة

اضبط تنبيهات على Throttles لتلقي إشعار قبل أن يؤثر الخنق في المستخدمين النهائيين.

aws cloudwatch put-metric-alarm \
  --alarm-name 'LambdaThrottlesAlert' \
  --metric-name Throttles \
  --namespace AWS/Lambda \
  --dimensions Name=FunctionName,Value=MyFunction \
  --statistic Sum \
  --period 60 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --evaluation-periods 1

معالجة الخنق في كود التطبيق

عند تصميم أنظمة تستدعي Lambda بشكل متزامن، مثل API Gateway أو استدعاءات SDK المباشرة، نفّذ التراجع الأسي مع التذبذب في المستدعي. تحتوي AWS SDKs على منطق إعادة محاولة مضمّن، لكن بالنسبة إلى Lambda التي تقع خلف API Gateway، يجب معالجة استجابات 429 في تطبيق العميل. بالنسبة إلى Lambda التي يشغلها SQS، تتولى خدمة SQS نفسها إعادة المحاولة؛ اضبط Maximum Receives في قائمة الانتظار المصدر بالشكل المناسب، وهيئ DLQ لعمليات إعادة المحاولة المستنفدة.

التزامن والمشغلات المستندة إلى التدفقات

بالنسبة إلى Kinesis Data Streams وDynamoDB Streams، يكون تزامن Lambda مقيداً بعدد الأجزاء (Kinesis) أو الأقسام (DynamoDB). يُعالج كل جزء أو قسم بواسطة عملية تنفيذ Lambda متزامنة واحدة بالضبط. إذا كان لديك 10 أجزاء Kinesis، تشغّل Lambda ما يصل إلى 10 عمليات تنفيذ متزامنة لهذا المشغل. وهذا يعني أن مشكلات الخنق مع المشغلات المستندة إلى التدفقات تُحل عادةً بزيادة عدد الأجزاء بدلاً من رفع حدود التزامن.

تحقق سريع

اختبر فهمك لمفاهيم AWS Solutions Architect ‏(SAA-C03) الواردة في هذا الدرس.

ملخص الدرس

تعلمت في هذا الدرس ما يلي: يضمن التزامن المحجوز عمليات التنفيذ المتزامنة للدالة ويحدّها في آن واحد لحماية الخدمات اللاحقة وضمان التوافر؛ ويهيئ التزامن الموفَّر البيئات مسبقاً لإزالة عمليات البدء البارد لأحمال العمل الحساسة لزمن الاستجابة؛ ويظهر الخنق على هيئة أخطاء 429 للاستدعاءات المتزامنة وعمليات إعادة محاولة موضوعة في قائمة انتظار للاستدعاءات غير المتزامنة—راقبه باستخدام مقياس Throttles في CloudWatch. بعد ذلك، سنستكشف Lambda Layers وحزم النشر لإدارة التبعيات الكبيرة.

الأسئلة الشائعة

هل درس «التزامن والتقييد والتزامن المحجوز» مجاني؟

نعم — نص درس «التزامن والتقييد والتزامن المحجوز» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «التزامن والتقييد والتزامن المحجوز»؟

تعرّفوا إلى كيفية توسّع Lambda بالتزامن، واضبطوا التزامن المحجوز لحماية الخدمات التابعة، وتعاملوا مع أخطاء التقييد. تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «التزامن والتقييد والتزامن المحجوز»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات
  2. التزامن والتقييد والتزامن المحجوز
  3. طبقات Lambda وحزم النشر
  4. Lambda@Edge والأنماط المستندة إلى الأحداث
← العودة إلى Cloud & IT Cert Prep