تحديد معدل المكالمة حسب المفتاح
ينطبق على: المطور | أساسي | الإصدار 2 الأساسي | قياسي | الإصدار 2 القياسي | قسط
يمنع نهج rate-limit-by-key
طفرات استخدام واجهة برمجة التطبيقات على أساس المفتاح عن طريق الحدّ من معدل الاستدعاء لرقم محدد لكل فترة زمنية محددة. يمكن أن يتضمن المفتاح قيمة سلسلة إجبارية، ويتم توفيرها عادةً باستخدام التعبير عن النهج. يمكن إضافة شرط الزيادة الاختيارية لتحديد الطلبات التي ينبغي حسابها ضمن الحد. عند تجاوز معدل الاستدعاء، يتلقى المتصل التعليمة البرمجية 429 Too Many Requests
لحالة الاستجابة.
لفهم الفرق بين حدود المعدلات والحصص، راجع حدود المعدلات والحصص النسبية.
تنبيه
نظرًا للطبيعة الموزعة للهندسة المعمارية ذات التقييد، فإن الحد من المعدل ليس دقيقًا تمامًا. يختلف الاختلاف بين العدد الذي تم تكوينه والعدد الفعلي للطلبات المسموح بها بناءً على حجم الطلب وسعره وزمن انتقال الخلفية وعوامل أخرى.
إشعار
تعيين عناصر النهج والعناصر التابعة بالترتيب الوارد في بيان النهج. لمساعدتك في تكوين هذا النهج، يتيح المدخل محررًا موجهًا يستند إلى النموذج. تعلم كيفية إعداد نُهج APIM أو تعديلها.
نهج السياسة
<rate-limit-by-key calls="number"
renewal-period="seconds"
increment-condition="condition"
increment-count="number"
counter-key="key value"
retry-after-header-name="custom header name, replaces default 'Retry-After'"
retry-after-variable-name="policy expression variable name"
remaining-calls-header-name="header name"
remaining-calls-variable-name="policy expression variable name"
total-calls-header-name="header name"/>
سمات
السمة | الوصف | مطلوبة | افتراضي |
---|---|---|---|
calls | الحد الأقصى لإجمالي عدد الاستدعاءات المسموح بها لقيمة المفتاح أثناء الفاصل الزمني المحدد في renewal-period . يتم السماح بتعبيرات النهج. |
نعم | غير متوفر |
counter-key | المفتاح الذي يجب استخدامه لنهج حدّ المعدل. لكل قيمة مفتاح، يتم استخدام عداد واحد لجميع النطاقات التي يتم تكوين النهج بها. يتم السماح بتعبيرات النهج. | نعم | غير متوفر |
increment-condition | التعبير المنطقي الذي يحدد ما إذا كان يجب حساب الطلب نحو المعدل (true ). يتم السماح بتعبيرات النهج. |
لا | غير متاح |
زيادة العد | الرقم الذي يتم من خلاله زيادة العداد لكل طلب. يتم السماح بتعبيرات النهج. | لا | 1 |
renewal-period | الطول محسوبًا بالثواني للنافذة المنزلقة التي خلالها ينبغي ألا يتجاوز عدد الطلبات المسموح بها القيمة المحددة في calls . الحد الأقصى للقيمة المسموح بها: 300 ثانية. يتم السماح بتعبيرات النهج. |
نعم | غير متوفر |
retry-after-header-name | اسم عنوان استجابة مخصص قيمته هي الفاصل الزمني الموصى به لإعادة المحاولة بالثوان بعد تجاوز معدل الاستدعاء المحدد لقيمة المفتاح. تعبيرات النهج غير مسموح بها. | لا | Retry-After |
retry-after-variable-name | اسم متغير تعبير النهج الذي يخزن الفاصل الزمني لإعادة المحاولة الموصى به بالثوان بعد تجاوز معدل الاستدعاء المحدد لقيمة المفتاح. تعبيرات النهج غير مسموح بها. | لا | غير متاح |
remaining-calls-header-name | اسم عنوان الاستجابة الذي تكون قيمته بعد كل تنفيذ نهج هو عدد الاستدعاءات المتبقية المسموح بها لقيمة المفتاح في الفاصل الزمني المحدد في renewal-period . تعبيرات النهج غير مسموح بها. |
لا | غير متاح |
remaining-calls-variable-name | اسم متغير تعبير النهج الذي بعد كل تنفيذ نهج يخزن عدد الاستدعاءات المتبقية المسموح بها لقيمة المفتاح في الفاصل الزمني المحدد في renewal-period . تعبيرات النهج غير مسموح بها. |
لا | غير متاح |
total-calls-header-name | اسم عنوان الاستجابة الذي تكون قيمته هي القيمة المحددة في calls . تعبيرات النهج غير مسموح بها. |
لا | غير متاح |
الاستخدام
- أقسام النهج:الواردة.
- نطاقات النهج: العمومية، ومساحة العمل، والمنتج، وواجهة برمجة التطبيقات، والتشغيل
- البوابات: الكلاسيكية، الإصدار 2، المستضافة ذاتيا، مساحة العمل
ملاحظات الاستخدام
- تستخدم API Management عدادا واحدا لكل
counter-key
قيمة تحددها في النهج. يتم تحديث العداد في جميع النطاقات التي يتم فيها تكوين النهج بقيمة المفتاح هذه. إذا كنت ترغب في تكوين عدادات منفصلة في نطاقات مختلفة (على سبيل المثال، واجهة برمجة تطبيقات أو منتج معين)، فحدد قيم مفاتيح مختلفة في النطاقات المختلفة. على سبيل المثال، إلحاق سلسلة تعرف النطاق بقيمة تعبير. - يمكن تكوين عدد حدود المعدلات في بوابة مستضافة ذاتيا للمزامنة محليا (بين مثيلات البوابة عبر عقد نظام المجموعة)، على سبيل المثال، من خلال نشر مخطط Helm ل Kubernetes أو باستخدام قوالب توزيع مدخل Azure. ومع ذلك، لا تتم مزامنة عدد حدود المعدل مع موارد البوابة الأخرى التي تم تكوينها في مثيل APIM، بما في ذلك البوابة المدارة في السحابة. معرفة المزيد
مثال
في المثال التالي، يتم تحديد مفتاح الحد الأقصى لمعدل الاستدعاء وهو 10 مكالمات لكل 60 ثانية بواسطة عنوان IP المتصل. بعد كل تنفيذ نهج، يتم تخزين الاستدعاءات المتبقية المسموح بها لعنوان IP المتصل هذا في الفترة الزمنية في المتغير remainingCallsPerIP
.
<policies>
<inbound>
<base />
<rate-limit-by-key calls="10"
renewal-period="60"
increment-condition="@(context.Response.StatusCode == 200)"
counter-key="@(context.Request.IpAddress)"
remaining-calls-variable-name="remainingCallsPerIP"/>
</inbound>
<outbound>
<base />
</outbound>
</policies>
للحصول على مزيدٍ من المعلومات والأمثلة على هذا النهج، راجع تقييد الطلب المتقدم باستخدام APIM في Azure.
النهج ذات الصلة
المحتوى ذو الصلة
لمزيد من المعلومات حول العمل مع النُهج، راجع: