خطوات الاستخدام
الخطوة الأولى: حساب عدد الطلبات في الثانية (Requests Per Second). أدخل معدل الطلبات المتوقعة التي سيتلقاها تطبيقك في كل ثانية. هذا الرقم يعتمد على تحليل حركة المرور الفعلية أو التوقعات المستقبلية. على سبيل المثال، إذا كان تطبيقك يتلقى 1000 طلب في الدقيقة، فإن عدد الطلبات في الثانية يساوي 1000 ÷ 60 = 16.67 طلب/ثانية.
الخطوة الثانية: حساب متوسط مدة التنفيذ بالثواني (Average Duration). أدخل متوسط الوقت الذي تستغرقه دالة Lambda لتنفيذ طلب واحد. هذا المدة تُقاس بالمللي ثانية وتحوّل إلى ثوانٍ بقسمتها على 1000. على سبيل المثال، إذا كان متوسط وقت التنفيذ 200 مللي ثانية، فالمدة بالثواني = 0.2. هذه القيمة يمكن الحصول عليها من مراقبة CloudWatch.
الخطوة الثالثة: حساب التزامن المحجوز باستخدام الصيغة: Reserved Concurrency = RequestsPerSec × AvgDuration (بالثواني). هذه الصيغة مستمدة من قانون ليتل (Little's Law) في نظرية الطوابير، حيث تمثل التزامن المحجوز عدد النسخ المتزامنة المطلوبة للتعامل مع الحمل دون اختناق. على سبيل المثال، إذا كان الطلبات في الثانية = 50 ومتوسط المدة = 0.3 ثانية، فإن التزامن = 50 × 0.3 = 15.
الخطوة الرابعة: فهم المعنى العملي للقيمة الناتجة. التزامن المحجوز يضمن أن AWS Lambda تحتفظ بعدد كافٍ من النسخ المتزامنة لاستيعاب الحمل المستمر، مما يمنع أخطاء التقييد (Throttling) ويحسن زمن الاستجابة. لكن احذر: التكاليف تزيد مع زيادة التزامن المحجوز لأنه يضمن توفر الموارد دائمًا حتى عند عدم استخدامها.
الخطوة الخامسة: اختيار القيمة الفعلية للتزامن المحجوز بناءً على التقدير. قد تحتاج إلى إضافة هامش أمان بنسبة 10-20% للتغيرات المفاجئة في حركة المرور. أيضًا، ضع في اعتبارك أن الحد الأقصى للتزامن المحجوز لكل حساب هو 1000 (قابل للزيادة). استخدم هذه الحاسبة كأداة تقديرية ثم راجع القيم الفعلية لمراقبة CloudWatch.
أمثلة محلولة
تطبيقات عملية على تزامن Lambda المحجوز بخطوات الحل كاملة.
الحل
لحساب التزامن المحجوز، نستخدم الصيغة: التزامن المحجوز = معدل الطلبات في الثانية × متوسط مدة التنفيذ بالثواني. أولاً، نحول متوسط المدة من مللي ثانية إلى ثوانٍ: 500 مللي ثانية = 0.5 ثانية. ثم، التزامن = 200 × 0.5 = 100. إذن، تحتاج إلى تزامن محجوز قيمته 100 لضمان معالجة جميع الطلبات دون تأخير أو تقييد. هذا يعني أن Lambda ستحتفظ بـ 100 نسخة متزامنة جاهزة للعمل. إذا تجاوزت الطلبات هذا الرقم، قد تواجه تقييدًا لبعض الطلبات. يُنصح بإضافة هامش أمان بنسبة 20% ليصبح التزامن المحجوز 120. لاحظ أن هذه القيمة تؤثر على التكاليف، حيث أن التزامن المحجوز يفرض رسومًا حتى عند عدم الاستخدام الكامل.
الحل
أولاً، نحول معدل الطلبات إلى الطلبات في الثانية: 1000 طلب/دقيقة ÷ 60 = 16.67 طلب/ثانية تقريبًا. متوسط المدة = 300 مللي ثانية = 0.3 ثانية. الناتج الخام = 16.67 × 0.3 = 5.001، وتُقرّبه الحاسبة لأعلى وفق قانون ليتل إلى 6 نسخة متزامنة. هذا هو الحد الأدنى النظري. لكن في الواقع، حركة المرور غير منتظمة وقد تكون هناك دفعات مفاجئة. لتجنب التقييد، نضيف هامش أمان بنسبة 30% (لأن الذروة قد تصل إلى 130% من المتوسط) ليصبح الالتزام = 6 × 1.3 = 7.8، ونقرّب إلى 8. ومع ذلك، إذا كانت الدالة تتصل بخدمات خارجية أو قاعدة بيانات، قد تزداد مدة التنفيذ خلال الذروة. نوصي باختبار الحمل ومراقبة CloudWatch لتعديل القيمة. في هذا السيناريو، قد يكون التزامن المحجوز الفعلي بين 8 و10 حسب توزيع الحركة.
أمثلة محسوبة
قيم مُدخَلة ونتيجة محسوبة فعليًا بواسطة تزامن Lambda المحجوز.
مرجع — معالجة صور 200/ث
- الطلبات في الثانية
- 200
- متوسط المدة (ثانية)
- 0.5
مرجع — طلبات بالدقيقة مع تقريب لأعلى
- الطلبات في الثانية
- 16.67
- متوسط المدة (ثانية)
- 0.3
مرجع — دالة بطيئة نسبيًا
- الطلبات في الثانية
- 500
- متوسط المدة (ثانية)
- 1.5