التشغيل السريع: تعيين حدود معدل الطلب
إشعار
يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.
تنطبق هذه المقالة على:❌ Basic/Standard ✔️ Enterprise
يوضح لك هذا التشغيل السريع كيفية تعيين حدود معدل الطلب باستخدام Spring Cloud Gateway على خطة Azure Spring Apps Enterprise.
يتيح لك تحديد المعدل تجنب المشاكل التي تنشأ مع الارتفاعات في نسبة استخدام الشبكة. عند تعيين حدود معدل الطلب، يمكن لتطبيقك رفض الطلبات المفرطة. يساعدك هذا التكوين على تقليل أخطاء التقييد والتنبؤ بشكل أكثر دقة معدل النقل.
المتطلبات الأساسية
- حساب Azure مع اشتراك نشط. أنشئ حساباً مجاناً.
- فهم وتنفيذ قسم المتطلبات في خطة المؤسسة في Azure Marketplace.
- إصدار Azure CLI 2.45.0 أو أعلى.
- Git.
- jq
- ملحق خطة Azure Spring Apps Enterprise. استخدم الأمر التالي لإزالة الإصدارات السابقة وتثبيت أحدث ملحق لخطة المؤسسة. إذا قمت بتثبيت الملحق
spring-cloud
مسبقًا، قم بإلغاء تثبيته لتجنب عدم تطابق التكوين والإصدار.az extension add --upgrade --name spring az extension remove --name spring-cloud
- أكمل الخطوات في إنشاء التطبيقات ونشرها في Azure Spring Apps باستخدام خطة Enterprise.
تعيين حدود معدل الطلب
تتضمن Spring Cloud Gateway عوامل تصفية التوجيه من إصدار المصدر المفتوح والعديد من عوامل تصفية التوجيه. أحد عوامل التصفية هذه هو عامل تصفية RateLimit: تقييد طلبات المستخدم. يحدد عامل التصفية RateLimit عدد الطلبات المسموح بها لكل مسار خلال نافذة زمنية.
عند تعريف مسار، يمكنك إضافة عامل التصفية RateLimit عن طريق تضمينه في قائمة عوامل التصفية للمسار. يقبل عامل التصفية أربعة خيارات:
- عدد الطلبات المقبولة أثناء النافذة.
- مدة النافذة. تكون هذه القيمة بالمللي ثانية بشكل افتراضي، ولكن يمكنك تحديد لاحقة s أو m أو h للإشارة إلى أن القيمة بالثوان أو الدقائق أو الساعات.
- (اختياري) مفتاح قسم المستخدم. يمكنك أيضا تطبيق تحديد المعدل لكل مستخدم. أي، يمكن أن يكون لدى المستخدمين المختلفين معدل نقل خاص بهم مسموح به استنادا إلى معرف موجود في الطلب. الإشارة إلى ما إذا كان المفتاح في مطالبة JWT أو عنوان HTTP مع
claim
أوheader
بناء الجملة. - (اختياري) يمكنك تحديد المعدل حسب عناوين IP، ولكن ليس بالاشتراك مع تحديد المعدل لكل مستخدم.
قد يقتصر المثال التالي جميع المستخدمين على طلبين كل خمس ثوان إلى /products
المسار:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
إذا كنت ترغب في عرض مسار لمجموعات مختلفة من المستخدمين، كل واحد تم تعريفه بواسطة عنوان HTTP الخاص به client_id
، استخدم تعريف المسار التالي:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
عند تجاوز الحد، ستفشل الاستجابات بالحالة 429 Too Many Requests
.
استخدم الأمر التالي لتطبيق عامل التصفية RateLimit
على /products
المسار:
az spring gateway route-config update \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name catalog-routes \
--app-name catalog-service \
--routes-file azure-spring-apps-enterprise/resources/json/routes/catalog-service_rate-limit.json
استخدم الأوامر التالية لاسترداد عنوان URL للمسار /products
في Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
echo "https://${GATEWAY_URL}/products"
قم بإجراء العديد من الطلبات إلى عنوان URL خلال /products
فترة خمس ثوان لمشاهدة فشل الطلبات بحالة 429 Too Many Requests
.
تنظيف الموارد
إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. يمكنك حذف مجموعة الموارد عند انتهاء حاجتك إليها، وهذا يؤدي إلى حذف الموارد الموجودة في مجموعة الموارد. لحذف مجموعة الموارد باستخدام Azure CLI، استخدم الأوامر التالية:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
الخطوات التالية
تابع إلى أي من قوالب التشغيل السريع الاختيارية التالية: