أنت الآن بصدد الاطّلاع على مستندات Apigee Edge.
انتقِل إلى
مستندات Apigee X. info
توفّر Apigee Edge إمكانية ضبط عدد الطلبات المسموح بها لخادم وكيل لواجهة برمجة التطبيقات لفترة زمنية محدّدة باستخدام سياسة الحصة.
نمط مضاد
يمكن أن يتم عرض طلب وكيل واجهة برمجة التطبيقات من خلال مكوّن واحد أو أكثر من مكوّنات Edge الموزّعة، ويُطلق عليها اسم معالجات الرسائل. إذا تم إعداد عدة "معالجات رسائل" لعرض طلبات API، من المحتمل أن يتم تجاوز الحصة لأنّ كل "معالج رسائل" يحتفظ بـ "عدد" الطلبات التي يعالجها.
لنوضّح ذلك بمساعدة مثال. ضع في اعتبارك سياسة الحصة التالية لخادم وكيل لواجهة برمجة التطبيقات:
<!-- /antipatterns/examples/1-6.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
من المفترض أن تسمح الإعدادات أعلاه بإجمالي 100 طلب في الساعة.
في الواقع، عندما تعالج عدة وحدات معالجة رسائل طلبات البيانات من واجهة برمجة التطبيقات، يحدث ما يلي:

في الرسم التوضيحي أعلاه:
- تم ضبط سياسة الحصة على السماح بـ 100 طلب في الساعة.
- يتم عرض الطلبات إلى خادم وكيل واجهة برمجة التطبيقات من خلال معالجتَي رسائل.
- يحتفظ كل معالج رسائل بمتغيّر خاص به لعدد الحصص، وهو
quota_count_mp1وquota_count_mp2، لتتبُّع عدد الطلبات التي يعالجها. - لذلك، سيسمح كل معالج رسائل بـ 100 طلب من طلبات واجهة برمجة التطبيقات بشكل منفصل. والنتيجة النهائية هي معالجة 200 طلب بدلاً من 100 طلب.
التأثير
يؤدي هذا الموقف إلى إبطال الغرض من إعدادات الحصة ويمكن أن يؤثر سلبًا في خوادم الخلفية التي تعالج الطلبات.
يمكن لخوادم الخلفية إجراء ما يلي:
- أن يكون تحت ضغط بسبب عدد الزيارات الواردة الأعلى من المتوقّع
- عدم الاستجابة لطلبات البيانات الجديدة من واجهة برمجة التطبيقات، ما يؤدي إلى ظهور أخطاء 503
أفضل الممارسات
ننصحك بضبط العنصر <Distributed> على true في سياسة الحصة لضمان استخدام عدّاد مشترك لتتبُّع طلبات واجهة برمجة التطبيقات في جميع معالجات الرسائل.
يمكن ضبط العنصر <Distributed> كما هو موضّح في مقتطف الرمز البرمجي أدناه:
<!-- /antipatterns/examples/1-7.xml --> <Quota name="CheckTrafficQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Distributed>true</Distributed> <Allow count="100"/> </Quota>