0Pricing
AWS Solutions Architect · درس

التقييد والتخزين المؤقت وخطط الاستخدام

احموا الواجهات الخلفية بحدود التقييد للدفعات وحالة الاستقرار، ومكّنوا التخزين المؤقت للاستجابات، وأنشئوا خطط استخدام بمفاتيح API للشركاء.

التقييد والتخزين المؤقت وخطط الاستخدام درس مجاني في AWS Solutions Architect على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AWS Solutions Architect، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AWS Solutions Architect 4 دروس في المجموع.

أهمية تقييد المعدل

من دون تقييد للمعدل، قد يتسبب عميل واحد سيئ السلوك أو ارتفاع مفاجئ في حركة المرور في إرهاق خدماتك الخلفية، مثل التزامن في Lambda أو اتصالات RDS أو واجهات API التابعة. يحد تقييد المعدل في API Gateway من عدد الطلبات في الثانية، ويسمح بحدوث دفعات قصيرة تتجاوز المعدل المستقر. وتتلقى الطلبات المقيّدة استجابة 429 Too Many Requests فورًا، دون وصول الطلب إلى النظام الخلفي، مما يحمي الموارد التابعة من التحميل الزائد.

تقييد المعدل على مستوى الحساب والمرحلة

يعمل تقييد المعدل على مستويات متعددة. يبلغ الحد على مستوى الحساب 10,000 طلب في الثانية (RPS)، مع دفعة قدرها 5,000 طلب (وهو حد قابل للزيادة). وعلى مستوى المرحلة، يمكنك تعيين معدل تقييد افتراضي (RPS) وحد للدفعة ينطبقان على جميع الطرق في المرحلة. وعلى مستوى الطريقة، يمكنك تجاوز الإعدادات الافتراضية للمرحلة لنقاط نهاية محددة؛ فعلى سبيل المثال، منح نقطة نهاية GET كثيرة القراءة حد معدل أعلى من نقطة نهاية POST كثيرة الكتابة.

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/*/*/throttling/rateLimit,value=1000' \
    'op=replace,path=/*/*/throttling/burstLimit,value=2000'

خوارزمية دلو الرموز

يستخدم تقييد المعدل في API Gateway خوارزمية دلو الرموز. وتتراكم الرموز في الدلو حتى تصل إلى حد الدفعة (السعة الفورية القصوى). ويستهلك كل طلب رمزًا واحدًا. وتُعاد تعبئة الرموز وفق حد المعدل (عدد RPS المستقر). إذا أصبح الدلو فارغًا، تُقيّد الطلبات. مثال: burst=5000 وrate=1000 RPS. في البداية يمكنك معالجة 5000 طلب متزامن، ثم يُعاد ملء الدلو بمعدل 1000 رمز في الثانية. ويسمح ذلك بامتصاص الارتفاعات القصيرة في حركة المرور مع فرض حدود المعدل على المدى الطويل.

التخزين المؤقت للاستجابات في API Gateway

يخزن التخزين المؤقت للاستجابات (المتاح في مراحل REST API) استجابات النظام الخلفي في ذاكرة مؤقتة تديرها API Gateway، بحيث تُخدم الطلبات المتطابقة من الذاكرة المؤقتة دون الوصول إلى النظام الخلفي. ويقلل ذلك الحمل على النظام الخلفي وزمن الانتقال، ويمكن أن يخفض بدرجة كبيرة تكاليف استدعاءات Lambda لواجهات API التي تكثر فيها عمليات القراءة. ويُحدَّد مفتاح الذاكرة المؤقتة وفق الطلب، بما في ذلك الطريقة والمسار وسلاسل الاستعلام والترويسات، حسب الإعداد. ويمكن ضبط TTL للذاكرة المؤقتة من 0 إلى 3600 ثانية، والقيمة الافتراضية 300 ثانية.

aws apigateway update-stage \
  --rest-api-id 'abc123' \
  --stage-name 'prod' \
  --patch-operations \
    'op=replace,path=/cacheClusterEnabled,value=true' \
    'op=replace,path=/cacheClusterSize,value=0.5' \
    'op=replace,path=/*/*/caching/ttlInSeconds,value=300'

تخصيص مفتاح التخزين المؤقت

يكون مفتاح التخزين المؤقت افتراضيًا هو عنوان URL الكامل للطلب. ويمكنكم تخصيص العناصر التي تسهم في تكوين مفتاح التخزين المؤقت: تضمين معلمات محددة من سلسلة الاستعلام (مثل pageSize وfilter) مع استبعاد المعلمات غير المهمة (مثل الطابع الزمني). ويمكنكم أيضًا تضمين رؤوس محددة في مفتاح التخزين المؤقت. استبعدوا الرؤوس الحساسة من مفتاح التخزين المؤقت لمنع تسرب البيانات الخاصة إلى إدخالات التخزين المؤقت المشتركة. استخدموا ضبط مفتاح التخزين المؤقت لتحقيق أعلى معدل إصابة ممكن، مع ضمان حصول الطلبات المنطقية المختلفة على استجابات مخزنة مؤقتًا مختلفة.

إبطال التخزين المؤقت

يمكن للعملاء إبطال التخزين المؤقت لطلب محدد من خلال تضمين الرأس Cache-Control: max-age=0. ويمكنكم أيضًا مسح ذاكرة التخزين المؤقت للمرحلة بأكملها من وحدة التحكم أو عبر API. اضبطوا ما إذا كان يُسمح للعملاء بإبطال التخزين المؤقت، وقيّدوا ذلك في بيئة الإنتاج لمنع العملاء من تجاوز التخزين المؤقت عمدًا. ولمنح أذونات المسح بشكل انتقائي، أرفقوا سياسة موارد أو استخدموا Lambda authoriser يتحقق من امتلاك المستدعي إذن المسح.

# Flush entire stage cache
aws apigateway flush-stage-cache \
  --rest-api-id 'abc123' \
  --stage-name 'prod'

خطط الاستخدام: حدود المعدل لكل عميل

تحدد Usage Plan حدود تحديد المعدل وحدود الحصة لمجموعة من عملاء API. اربطوا مرحلة API بخطة استخدام، ثم اربطوا API keys بالخطة. يفرض كل مفتاح API حدود الخطة بشكل مستقل. تتيح لكم خطط الاستخدام تقديم مستويات وصول متعددة: خطة مجانية بمعدل 100 طلب في الدقيقة و10,000 طلب يوميًا، وخطة Pro بمعدل 1,000 طلب في الدقيقة و100,000 طلب يوميًا. وهذا هو النموذج المتبع في واجهات API المدفوعة وتكاملات الشركاء، حيث يحتاج العملاء المختلفون إلى حدود معدل مختلفة.

# Create a usage plan
aws apigateway create-usage-plan \
  --name 'ProTier' \
  --throttle 'rateLimit=1000,burstLimit=2000' \
  --quota 'limit=100000,period=DAY' \
  --api-stages 'apiId=abc123,stage=prod'

مفاتيح API وتحديد هوية العميل

إن API keys رموز نصية غير مكشوفة يدرجها العملاء في رأس الطلب x-api-key. يتحقق API Gateway من المفتاح ويربط الطلب بخطة الاستخدام المقابلة. لا تُعد مفاتيح API آلية أمنية—فهي تُستخدم فقط لتحديد هوية العملاء لأغراض تحديد المعدل والحصص. ولأغراض الأمان، اقرنوا دائمًا مفاتيح API بآلية تفويض مناسبة (IAM أو Lambda authoriser أو Cognito). أما مفاتيح API غير المرتبطة بخطة استخدام، فلا تُطبَّق عليها حدود تحديد المعدل.

# Create an API key and associate with usage plan
aws apigateway create-api-key \
  --name 'PartnerABC-Key' \
  --enabled

aws apigateway create-usage-plan-key \
  --usage-plan-id 'uvw321' \
  --key-id 'xyz789' \
  --key-type API_KEY

حدود الحصة في خطط الاستخدام

بالإضافة إلى معدلات تحديد المعدل لكل ثانية، تدعم خطط الاستخدام حدود الحصة: وهي الحد الأقصى لعدد الطلبات خلال فترة زمنية (DAY أو WEEK أو MONTH). بعد استنفاد العميل حصته، تُرجع الطلبات اللاحقة الرمز 429 إلى أن تتم إعادة ضبط الحصة. تفيد حدود الحصة في فرض قيود المستوى المجاني، ومنع إساءة استخدام API، ومواءمة استهلاك API مع الفوترة. وتكون عدادات الحصص متسقة في النهاية، لذلك قد يتجاوز العميل حصته قليلًا قبل حظره.

مقاييس CloudWatch لتحديد المعدل والتخزين المؤقت

راقبوا سلامة API Gateway باستخدام مقاييس CloudWatch التالية:

  • Count: إجمالي استدعاءات API
  • 4XXError: أخطاء العميل، بما فيها عمليات تحديد المعدل 429
  • 5XXError: أخطاء الواجهة الخلفية
  • Latency: زمن الطلب من البداية إلى النهاية
  • IntegrationLatency: الوقت المستغرق في انتظار الواجهة الخلفية
  • CacheHitCount / CacheMissCount: فعالية التخزين المؤقت

اضبطوا تنبيهات عند ارتفاع 4XXError لاكتشاف مشكلات تحديد المعدل قبل تأثيرها في المستخدمين، وكذلك عند ارتفاع CacheMissCount لتحديد مشكلات إعداد التخزين المؤقت.

متى يتم تفعيل التخزين المؤقت بدلًا من تحديد المعدل

استخدموا التخزين المؤقت مع واجهات API التي تتركز فيها عمليات القراءة وتتغير استجابتها على فترات متباعدة، مثل البحث في كتالوج المنتجات والبيانات المرجعية والإعدادات الثابتة. ويكون التخزين المؤقت غير مفيد للبيانات الخاصة بالمستخدم أو شديدة التغير. استخدموا تحديد المعدل دائمًا، حتى مع واجهات API الداخلية، لحماية خدمات الواجهة الخلفية من الحمل الزائد. واجمعوا بين الطريقتين: خزّنوا البيانات الشائعة مؤقتًا لتقليل الحمل على الواجهة الخلفية، وطبّقوا تحديدًا صارمًا للمعدل لمنع أي عميل من السيطرة على API. بالنسبة إلى اختبار SAA-C03، يقلل التخزين المؤقت التكلفة وزمن الاستجابة، بينما يضمن تحديد المعدل التوافر.

تحقق سريع

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

مراجعة الدرس

تعلمتم في هذا الدرس أن تحديد المعدل على مستوى الحساب والمرحلة والطريقة يحمي الواجهات الخلفية باستخدام خوارزمية مجموعة الرموز ذات حدود معدل واندفاع قابلة للضبط، وأن التخزين المؤقت للاستجابات يخزن استجابات الواجهة الخلفية لفترات TTL قابلة للضبط لتقليل الحمل عليها وزمن الاستجابة لنقاط النهاية التي تكثر فيها القراءة، وأن خطط الاستخدام مع مفاتيح API تفرض معدلات تحديد المعدل والحصص لكل عميل، مما يتيح التحكم في الوصول متعدد المستويات لواجهات API الخاصة بالشركاء والعامة. سنتناول بعد ذلك عناقيد ECS وتعريفات المهام والخدمات لأحمال العمل المعتمدة على الحاويات.

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

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

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

ماذا ستتعلم في «التقييد والتخزين المؤقت وخطط الاستخدام»؟

احموا الواجهات الخلفية بحدود التقييد للدفعات وحالة الاستقرار، ومكّنوا التخزين المؤقت للاستجابات، وأنشئوا خطط استخدام بمفاتيح API للشركاء. تتمرن على AWS Solutions Architect مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AWS Solutions Architect؟

لا تُشترط خبرة سابقة. AWS Solutions Architect على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «التقييد والتخزين المؤقت وخطط الاستخدام»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس AWS Solutions Architect هذا؟

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

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

  1. REST API مقابل HTTP API مقابل WebSocket API
  2. التكاملات: Lambda وHTTP وMock
  3. التفويض: IAM وLambda Authorizers وCognito
  4. التقييد والتخزين المؤقت وخطط الاستخدام
← العودة إلى AWS Solutions Architect