سياسة الحصة

أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

ما هي الإعلانات الترويجية؟

استخدِم سياسة الحصة لضبط عدد رسائل الطلبات التي يسمح بها وكيل واجهة برمجة التطبيقات على مدار فترة زمنية، مثل دقيقة أو ساعة أو يوم أو أسبوع أو شهر. يمكنك ضبط الحصة لتكون متماثلة لجميع التطبيقات التي تصل إلى خادم وكيل واجهة برمجة التطبيقات، أو يمكنك ضبط الحصة استنادًا إلى:

  • المنتج الذي يحتوي على خادم وكيل واجهة برمجة التطبيقات
  • التطبيق الذي يطلب واجهة برمجة التطبيقات
  • مطوّر التطبيق
  • العديد من المعايير الأخرى

لا تستخدِم الحصة لحماية موقعك من الارتفاعات الكبيرة في عدد الزيارات بشكل عام. ولإجراء ذلك، استخدِم سياسة "إيقاف الارتفاعات المفاجئة في عدد الزيارات" . راجِع سياسة رصد الارتفاعات المفاجئة في عدد الزيارات.

الفيديوهات

تعرِض هذه الفيديوهات كيفية إدارة الحصة من خلال سياسة الحصة:

مقدمة (Edge الجديدة)

مقدمة (Classic Edge)

الحصة الديناميكية

الموزَّعة والمتزامنة

وزن الرسالة

التقويم

فترة زمنية متغيّرة

Flexi

الحصة المشروطة

متغيّرات التدفق

خطأ أثناء المعالجة

نماذج

توضّح نماذج رموز السياسات هذه كيفية بدء فترات الحصة وإنهائها من خلال:

حصة ديناميكية أكبر

<Quota name="CheckQuota"> 
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit>
  <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/>
</Quota>

تتيح لك الحصص الديناميكية ضبط سياسة حصة واحدة تفرض إعدادات حصة مختلفة استنادًا إلى المعلومات التي يتم تمريرها إلى سياسة الحصة. هناك مصطلح آخر لإعدادات الحصة في هذا السياق وهو "خطة الخدمة". تتحقّق الحصة الديناميكية من "خطة الخدمة" للتطبيقات، ثم تفرض هذه الإعدادات.

ملاحظة: إذا حدّدت قيمة ومرجعًا لعنصر معيّن، سيحصل المرجع على الأولوية. إذا لم يتم حلّ المرجع أثناء التشغيل، يتم استخدام القيمة.

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

في المثال أعلاه، يستخدم الوكيل لواجهة برمجة التطبيقات الذي يحتوي على سياسة الحصة سياسة VerifyAPIKey التي تحمل الاسم verify-api-key للتحقّق من صحة مفتاح واجهة برمجة التطبيقات الذي تم تمريره في الطلب. بعد ذلك، تحصل سياسةquotation على متغيّرات مسار الإحالة الناجحة من سياسة VerifyAPIKey لقراءة قيمquotation التي تم ضبطها على منتج واجهة برمجة التطبيقات. لمزيد من المعلومات عن متغيّرات مسار VerifyAPIKey، يُرجى الاطّلاع على سياسة Verify API Key.

هناك خيار آخر وهو ضبط سمات مخصّصة للمطوّرين أو التطبيقات الفردية، ثم قراءة هذه القيم في سياسة الحصة. على سبيل المثال، تريد ضبط قيم مختلفة للحصة لكل مطوّر. في هذه الحالة، يمكنك ضبط سمات مخصّصة للمطوّر تحتوي على الحدّ الأقصى ووحدة الوقت والفاصل الزمني. يمكنك بعد ذلك الإشارة إلى هذه القيم في سياسة الحصة كما هو موضّح أدناه:

<Quota name="DeveloperQuota"> 
  <Identifier ref="verifyapikey.verify-api-key.client_id"/> 
  <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> 
  <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> 
  <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> 
</Quota>

يستخدم هذا المثال أيضًا متغيّرات مسار VerifyAPIKey للإشارة إلى السمات المخصّصة التي تم ضبطها على المطوّر.

يمكنك استخدام أي متغيّر لضبط مَعلمات سياسة الحصة. يمكن أن تأتي هذه المتغيّرات من:

  • متغيّرات مسار الإحالة الناجحة
  • المواقع على المنتج أو التطبيق أو المطوّر في واجهة برمجة التطبيقات
  • خريطة قيم مفاتيح (KVM)
  • عنوان أو مَعلمة طلب بحث أو مَعلمة نموذج أو غير ذلك

لكلّ وكيل لواجهة برمجة التطبيقات، يمكنك إضافة سياسة حصة تشير إلى المتغيّر نفسه في جميع سياسات الحصة الأخرى في جميع الوكلاء الآخرين، أو يمكن أن تشير سياسة الحصة إلى متغيّرات فريدة لهذه السياسة والوكيل.

وقت البدء

<Quota name="QuotaPolicy" type="calendar">
  <StartTime>2017-02-18 10:30:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

بالنسبة إلى الحصة التي تم ضبط type فيها على calendar، يجب تحديد قيمة <StartTime> صريحة. قيمة الوقت هي توقيت غرينيتش، وليس التوقيت المحلي. إذا لم تقدِّم قيمة <StartTime> لسياسة من النوع calendar، يُصدر Edge خطأ.

يتمّ تعديل عداد الحصة لكل تطبيق استنادًا إلى قيم <StartTime> و<Interval> و<TimeUnit>. في هذا المثال، يبدأ احتساب الحصة في الساعة 10:30 صباحًا بالتوقيت العالمي المنسَّق في 18 شباط (فبراير) 2017، وتتم إعادة تحميلها كل 5 ساعات. وبالتالي، ستكون عملية إعادة التحميل التالية في الساعة 3:30 مساءً بالتوقيت العالمي المتفق عليه في 18 شباط (فبراير) 2017.

عداد الوصول

<Quota name="QuotaPolicy">
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

يمكن للوكيل الذي يستند إلى واجهة برمجة التطبيقات الوصول إلى متغيّرات التدفق التي تحدّدها سياسة الحصة. يمكنك الوصول إلى متغيّرات المسار هذه في الوكيل لواجهة برمجة التطبيقات لتنفيذ المعالجة الشَرطية، أو مراقبة السياسة عند اقترابها من الحدّ الأقصى للحصة، أو عرض عداد الحصة الحالي لتطبيق، أو لأسباب أخرى.

بما أنّ الوصول إلى متغيّرات مسار الإحالة الناجحة للسياسة يستند إلى سمة name للسياسات، يمكنك الوصول إلى متغيّرات مسار الإحالة الناجحة للسياسة أعلاه التي تحمل الاسم QuotaPolicy على النحو التالي:

  • ratelimit.QuotaPolicy.allowed.count: العدد المسموح به
  • ratelimit.QuotaPolicy.used.count: قيمة العداد الحالية.
  • ratelimit.QuotaPolicy.expiry.time: التوقيت العالمي المنسق عند إعادة ضبط المعداد

هناك العديد من متغيّرات الخطوات الأخرى التي يمكنك الوصول إليها، كما هو موضّح أدناه.

على سبيل المثال، يمكنك استخدام سياسة AssignMessage التالية لعرض قيم متغيّرات تدفق Quota كرؤوس استجابة:

<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars">
    <AssignTo createNew="false" type="response"/>
    <Set>
        <Headers>
            <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header>
            <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header>
            <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header>
        </Headers>
    </Set>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

الطلب الأول

<Quota name="MyQuota">
  <Interval>1</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="10000"/>
</Quota>

استخدِم نموذج الرمز البرمجي هذا لفرض حصة تبلغ 10,000 مكالمة في الساعة. تعيد السياسة ضبط عدّاد الحصة في أعلى كل ساعة. إذا وصل المعداد إلى حصة 10,000 مكالمة قبل نهاية الساعة، يتم رفض المكالمات التي تتجاوز 10,000 مكالمة.

على سبيل المثال، إذا بدأ المعداد عند 2017-07-08 07:00:00، سيتم إعادة ضبطه على 0 عند 2017-07-08 08:00:00 (ساعة واحدة من وقت البدء). إذا تم تلقّي الرسالة الأولى في الساعة 2017-07-08 07:35:28 ووصل عدد الرسائل إلى 10,000 قبل الساعة 2017-07-08 08:00:00، يتم رفض المكالمات التي تتجاوز هذا العدد إلى أن تتم إعادة ضبط عدد الرسائل في بداية الساعة.

يستند وقت إعادة ضبط العداد إلى <Interval> و <TimeUnit>. على سبيل المثال، إذا ضبطت <Interval> على 12 لمدة <TimeUnit> ساعة، تتم إعادة ضبط المعداد كل اثنتي عشرة ساعة. يمكنك ضبط <TimeUnit> على دقيقة أو ساعة أو يوم أو أسبوع أو شهر.

يمكنك الإشارة إلى هذه السياسة في مواضع متعددة في الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، يمكنك وضعها في مسار الإعداد المُسبَق للوكيل لكي يتم تنفيذها عند كل طلب. أو يمكنك وضعه في عمليات متعددة في الوكيل لواجهة برمجة التطبيقات. في حال استخدام هذه السياسة في مواضع متعدّدة في الخادم الوكيل، سيحتفظ بعداد واحد يتم تعديله من خلال جميع نُسخ السياسة.

بدلاً من ذلك، يمكنك تحديد سياسات حصص متعددة في خادم API الوكيل. تحتفظ كل سياسة حصة بعداد خاص بها، استنادًا إلى سمة name للسياسة.

ضبط المعرّف

<Quota name="QuotaPolicy" type="calendar">
  <Identifier ref="request.header.clientId"/> 
  <StartTime>2017-02-18 10:00:00</StartTime>
  <Interval>5</Interval>
  <TimeUnit>hour</TimeUnit>
  <Allow count="99"/>
</Quota>

بشكلٍ تلقائي، تحدِّد سياسة الحصة عدّادًا واحدًا للخادم الوكيل لواجهة برمجة التطبيقات، بغض النظر عن مصدر الطلب. بدلاً من ذلك، يمكنك استخدام سمة <Identifier> مع سياسة حصة للحفاظ على عدادات منفصلة استنادًا إلى قيمة سمة <Identifier>.

على سبيل المثال، استخدِم العلامة <Identifier> لتحديد عدادات منفصلة لكل معرّف عميل. عند تلقّي طلب من الخادم الوكيل، يُرسِل تطبيق العميل عنوانًا يحتوي على العنصر clientID، كما هو موضّح في المثال أعلاه.

يمكنك تحديد أي متغيّر مسار إلى سمة <Identifier>. على سبيل المثال، يمكنك تحديد أنّ مَعلمة طلب البحث التي تحمل الاسم id تحتوي على المُعرِّف الفريد:

<Identifier ref="request.queryparam.id"/>

إذا كنت تستخدِم سياسة VerifyAPIKey للتحقّق من مفتاح واجهة برمجة التطبيقات، أو سياسات OAuthV2 مع الرموز المميّزة لبروتوكول OAuth، يمكنك استخدام المعلومات الواردة في مفتاح واجهة برمجة التطبيقات أو الرمز المميّز لتحديد عدّادات individual لسياسة الحصة نفسها. على سبيل المثال، تستخدم العلامة <Identifier> التالية متغيّر تدفق client_id لسياسة VerifyAPIKey التي تحمل الاسم verify-api-key:

<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>

تحدِّد الآن كل قيمة فريدة من client_id العداد الخاص بها في سياسة "الحصة ".

لكل الصف

<Quota name="QuotaPolicy">
  <Interval>1</Interval>
  <TimeUnit>day</TimeUnit>
  <Allow>
    <Class ref="request.header.developer_segment">
      <Allow class="platinum" count="10000"/>
      <Allow class="silver" count="1000" />
    </Class>
  </Allow>
</Quota>

يمكنك ضبط حدود الحصص ديناميكيًا باستخدام عدد الحصص المستنِد إلى الفئة. في هذا المثال، يتم تحديد الحد الأقصى للحصة حسب قيمة الرأس developer_segment الذي يتم تمريره مع كل طلب. يمكن أن يكون لهذا المتغيّر قيمة platinum أو silver. إذا كان العنوان يحتوي على قيمة غير صالحة، تعرض السياسة خطأ انتهاك الحصة.


لمحة عن سياسة الحصة

الحصة هي حصة من رسائل الطلبات التي يمكن أن يعالجها خادم وكيل لواجهة برمجة التطبيقات خلال فترة زمنية، مثل الدقيقة أو الساعة أو اليوم أو الأسبوع أو الشهر. تحتفظ السياسة بعدادات تُحصي عدد الطلبات التي تلقّاها الوكيل لواجهة برمجة التطبيقات. تتيح هذه الميزة لموفّري واجهات برمجة التطبيقات فرض حدود على عدد طلبات البيانات من واجهة برمجة التطبيقات التي تجريها التطبيقات خلال فترة زمنية معيّنة. باستخدام سياسات الحصص، يمكنك مثلاً السماح للتطبيقات بإجراء طلب واحد في الدقيقة أو 10,000 طلب في الشهر.

على سبيل المثال، إذا تم تحديد الحصة على أنّها 10,000 رسالة في الشهر، يبدأ الحدّ من معدّل الإرسال بعد الرسالة 10,000. لا يهمّ ما إذا تم احتساب 10,000 رسالة في اليوم الأول أو اليوم الأخير من تلك الفترة، ولا يُسمح بطلبات إضافية إلى أن تتم إعادة ضبط عداد الحصة تلقائيًا في نهاية الفاصل الزمني المحدّد، أو إلى أن تتم إعادة ضبط الحصة صراحةً باستخدام سياسة إعادة ضبط الحصة.

هناك نوع من الحصة يُسمى SpikeArrest يمنع الارتفاعات المفاجئة في عدد الزيارات (أو الذروات) التي يمكن أن تنجم عن زيادة مفاجئة في الاستخدام أو عملاء يتضمّنون أخطاء أو هجمات ضارة. لمزيد من المعلومات عن SpikeArrest، يُرجى الاطّلاع على سياسة SpikeArrest.

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

أنواع سياسات الحصص

تتيح سياسة الحصة عدة أنواع مختلفة من السياسات: التلقائية وcalendar flexi وrollingwindow. يحدّد كل نوع وقت بدء عدّاد الحصة ووقت إعادة ضبطه، كما هو موضّح في الجدول التالي:

الوحدة الزمنية إعادة الضبط على القيمة التلقائية (أو القيمة الخالية) إعادة ضبط التقويم flexi reset
دقيقة بداية الدقيقة التالية بعد دقيقة واحدة من <StartTime> بعد دقيقة واحدة من الطلب الأول
ساعة بداية الساعة التالية بعد ساعة واحدة من <StartTime> بعد ساعة واحدة من الطلب الأول
يوم منتصف الليل بتوقيت غرينيتش لليوم الحالي بعد 24 ساعة من <StartTime> بعد 24 ساعة من الطلب الأول
أسبوع منتصف ليل الأحد بتوقيت غرينتش في نهاية الأسبوع بعد أسبوع واحد من <StartTime> بعد أسبوع واحد من الطلب الأول
شهر منتصف الليل بالتوقيت العالمي المنسَّق في آخر يوم من الشهر بعد شهر واحد (28 يومًا) من <StartTime> بعد شهر واحد (28 يومًا) من تقديم الطلب الأول

بالنسبة إلى type="calendar"، يجب تحديد قيمة <StartTime>.

لا يسرد الجدول قيمة النوع rollingwindow. تعمل الحصص في "النافذة المتغيّرة" من خلال ضبط حجم "نافذة" الحصة، مثل نافذة ساعة واحدة أو يوم واحد. عند تلقّي طلب جديد، تحدّد السياسة ما إذا تم تجاوز الحصة في "فترة" زمنية سابقة.

على سبيل المثال، يمكنك تحديد فترة ساعتَين تسمح بتقديم 1, 000 طلب. يصل طلب جديد في الساعة 4:45 مساءً.تحسب السياسة عدد الحصص خلال فترة ساعتَين ماضية، أي عدد الطلبات منذ الساعة 2:45 مساءً. إذا لم يتم تجاوز الحد الأقصى للحصة في تلك الفترة التي تبلغ ساعتَين، سيتم السماح بالطلب.

بعد دقيقة واحدة، في الساعة 4:46 مساءً، يصل طلب آخر. الآن، تحتسب السياسة عدد الحصص منذ الساعة 2:46 مساءً لتحديد ما إذا تم تجاوز الحدّ الأقصى.

بالنسبة إلى النوع rollingwindow، لا تتم إعادة ضبط العداد مطلقًا، ولكن يتم إعادة احتسابه عند كل طلب.

فهم عدادات الحصة

تحافظ سياسة الحصة تلقائيًا على عدّاد واحد، بغض النظر عن عدد المرات التي تتم فيها الإشارة إليه في وكيل واجهة برمجة التطبيقات. يستند اسم عداد الحصة إلى سمة name للسياسة.

على سبيل المثال، يمكنك إنشاء سياسة حصة باسم MyQuotaPolicy بحد أقصى 5 طلبات ووضعها في مسارات متعددة (المسار "أ" و"ب" و"ج") في الوكيل لواجهة برمجة التطبيقات. على الرغم من أنّه يتم استخدامه في مسارات متعددة، إلا أنّه يحتفظ بعدّاد واحد يتم تعديله من خلال جميع نُسخ سياسة:

  • يتم تنفيذ المسار "أ" -> يتم تنفيذ MyQuotaPolicy ويكون العدّاد = 1
  • يتم تنفيذ المسار "ب" -> يتم تنفيذ MyQuotaPolicy ويكون العدّاد = 2
  • يتم تنفيذ المسار "أ" -> يتم تنفيذ MyQuotaPolicy ويكون العدّاد = 3
  • يتم تنفيذ المسار "ج" -> يتم تنفيذ MyQuotaPolicy ويكون العدّاد = 4
  • يتم تنفيذ المسار "أ" -> يتم تنفيذ MyQuotaPolicy ويكون العدّاد = 5

يتم رفض الطلب التالي لأيّ من عمليات الربط الثلاث لأنّ عداد الحصة وصل إلى الحدّ الأقصى.

إنّ استخدام سياسة الحصة نفسها في أكثر من مكان واحد في عملية التوسّط لواجهة برمجة التطبيقات، ما قد يؤدي إلى نفاد الحصة بشكل غير مقصود أسرع مما تتوقّع، هو نموذج مضاد موضّح في كتاب أنماط Apigee Edge المضادة.

بدلاً من ذلك، يمكنك تحديد سياسات حصص متعددة في الوكيل لواجهة برمجة التطبيقات واستخدام سياسة مختلفة في كل عملية. تحتفظ كل سياسة حصة بعداد خاص بها، استنادًا إلى سمة name للسياسة.

أو استخدِم العنصرَين <Class> أو <Identifier> في سياسة الحصة لتحديد عدّادات فريدة متعددة في سياسة واحدة. باستخدام هذين العنصرين، يمكن أن تحتفظ سياسة واحدة بعدادات مختلفة استنادًا إلى التطبيق الذي يقدّم الطلب، ومطوّر التطبيق الذي يقدّم الطلب، ومعرّف العميل أو معرّف آخر للعميل، وغير ذلك. اطّلِع على مثالين أعلاه للحصول على مزيد من المعلومات عن استخدام العنصرين <Class> أو <Identifier>.

رمز الوقت

يتم ضبط جميع أوقات الحصة على المنطقة الزمنية التوقيت العالمي المتفق عليه (UTC).

يتبع تنسيق وقت الحصة تنسيق التاريخ العادي الدولي المحدد في المعيار الدولي ISO 8601.

يتم تعريف التواريخ على أنّها السنة والشهر واليوم، بالتنسيق التالي: YYYY-MM-DD. على سبيل المثال، يمثّل 2015-02-04 4 شباط (فبراير) 2015.

يتم تحديد وقت اليوم على أنّه الساعات والدقائق والثواني بالتنسيق التالي: hours:minutes:seconds. على سبيل المثال، تمثّل 23:59:59 الوقت قبل ثانية من منتصف الليل.

يُرجى العلم أنّ هناك علامتَين، 00:00:00 و24:00:00، متاحتَين للتمييز بين منتصفَي الليل اللذين يمكن ربطهما بتاريخ واحد. وبالتالي، التاريخ والوقت في 2015-02-04 24:00:00 هما التاريخ والوقت نفسهما في 2015-02-05 00:00:00. وعادةً ما يكون هذا الرمز هو المفضّل.

الحصول على إعدادات الحصة من إعدادات منتج واجهة برمجة التطبيقات

يمكنك ضبط حدود الحصة في إعدادات منتجات واجهة برمجة التطبيقات. ولا تفرض هذه الحدود الحصة تلقائيًا. بدلاً من ذلك، يمكنك الإشارة إلى إعدادات حصة المنتج في سياسة الحصة. في ما يلي بعض مزايا ضبط حصة على المنتج لسياسات الحصص الرجوع إليها:

  • يمكن أن تستخدم سياسات الحصص إعدادًا موحّدًا في جميع الوكلاء لـ API في منتج واجهة برمجة التطبيقات.
  • يمكنك إجراء تغييرات أثناء التشغيل على إعداد الحصة في أحد منتجات واجهة برمجة التطبيقات، وسيتم تلقائيًا تعديل قيم الحصة في سياسات الحصة التي تشير إلى القيمة.

لمزيد من المعلومات حول استخدام إعدادات الحصة من منتج واجهة برمجة التطبيقات، اطّلِع على مثال "الحصة الديناميكية" أعلاه..

للحصول على معلومات عن ضبط منتجات واجهة برمجة التطبيقات مع حدود الحصص، يُرجى الاطّلاع على مقالة إنشاء منتجات واجهة برمجة التطبيقات.

مرجع العنصر

في ما يلي العناصر والسمات التي يمكنك ضبطها في هذه السياسة. يُرجى العلم أنّ بعض مجموعات العناصر تكون متعارضة مع بعضها أو غير مطلوبة. اطّلِع على العيّنات لاستخدام محدّد. تتوفّر متغيّرات verifyapikey.VerifyAPIKey.apiproduct.* أدناه تلقائيًا عند استخدام سياسة "التحقّق من مفتاح واجهة برمجة التطبيقات" التي تُسمّى "VerifyAPIKey" للتحقّق من مفتاح واجهة برمجة التطبيقات للتطبيق في الطلب. تأتي قيم المتغيّرات من إعدادات الحصة في منتج واجهة برمجة التطبيقات المرتبط بالمفتاح، كما هو موضّح في الحصول على إعدادات الحصة من إعدادات منتج واجهة برمجة التطبيقات.

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
   <DisplayName>Quota 3</DisplayName>
   <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
   <Allow>
      <Class ref="request.queryparam.time_variable">
        <Allow class="peak_time" count="5000"/>
        <Allow class="off_peak_time" count="1000"/>
      </Class>
   </Allow>
   <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> 
   <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
   <StartTime>2017-7-16 12:00:00</StartTime> 
   <Distributed>false</Distributed> 
   <Synchronous>false</Synchronous> 
   <AsynchronousConfiguration> 
      <SyncIntervalInSeconds>20</SyncIntervalInSeconds> 
      <SyncMessageCount>5</SyncMessageCount> 
   </AsynchronousConfiguration> 
   <Identifier/> 
   <MessageWeight/> 
</Quota>

سمات <Quota>

<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">

السمات التالية خاصة بهذه السياسة.

السمة الوصف تلقائي التواجد في المنزل
النوع

استخدِم هذا الإجراء لتحديد وقت التحقّق من استخدام الحصة وطريقة التحقّق. اطّلِع على أنواع سياسات الحصص للحصول على مزيد من المعلومات.

في حال حذف قيمة type، يبدأ المعداد في بداية الدقيقة/الساعة/اليوم/الأسبوع/الشهر.

تشمل القيم الصالحة ما يلي:

  • calendar: يمكنك ضبط حصة استنادًا إلى وقت بدء صريح. تتم إعادة تحميل عداد "الحصة" لكل تطبيق استنادًا إلى قيم <StartTime> و<Interval> و <TimeUnit> التي تحدّدها.
  • rollingwindow: يمكنك ضبط حصة تستخدِم "نافذة متحركة" لتحديد استخدام الحصة. باستخدام rollingwindow، يمكنك تحديد حجم الفترة باستخدام العنصرين <Interval> و<TimeUnit>، على سبيل المثال، يوم واحد. عند تلقّي طلب، يفحص Edge الوقت الدقيق للطلب (مثلاً 5:01 مساءً)، ويحصي عدد الطلبات التي تم تلقّيها بين ذلك الوقت و5:01 مساءً بالأمس (يوم واحد)، ويحدّد ما إذا تم تجاوز الحصة خلال هذه الفترة أم لا.
  • flexi: يمكنك ضبط حصة تؤدي إلى بدء العدّ عند تلقّي رسالة الطلب الأولى من أحد التطبيقات، وتتم إعادة ضبطها استنادًا إلى قيمتَي <Interval>, و<TimeUnit>.
تقويم اختياري

يصف الجدول التالي السمات المشتركة بين جميع العناصر الرئيسية للسياسة:

السمة الوصف تلقائي التواجد في المنزل
name

الاسم الداخلي للسياسة. يمكن لقيمة السمة name أن تحتوي على أحرف وأرقام ومسافات وواصلات وشرطات سفلية ونقاط. لا يمكن لهذه القيمة يتجاوز 255 حرفًا.

يمكنك، إذا أردت، استخدام العنصر <DisplayName> لتصنيف السياسة محرر الخادم الوكيل لواجهة مستخدم الإدارة باسم مختلف بلغة طبيعية.

لا ينطبق مطلوب
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ سياسة. هذا متوقّع السلوك في معظم السياسات.

يمكنك ضبط القيمة على true لمواصلة تنفيذ المسار حتى بعد تطبيق إحدى السياسات. فشل.

خطأ اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. لن تكون السياسة ويتم فرضها حتى لو ظلت مرتبطة بتدفق.

صحيح اختياري
async

تم إيقاف هذه السمة نهائيًا.

خطأ منهي العمل به

&lt;DisplayName&gt; عنصر

استخدِمه مع السمة name لتصنيف السياسة في إدارة خادم وكيل لواجهة المستخدم باسم مختلف بلغة طبيعية.

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم ضبط قيمة السمة name للسياسة على النحو التالي: استخدام البيانات المختلفة.

التواجد في المنزل اختياري
النوع سلسلة

عنصر <Allow>

تحدّد الحد الأقصى لعدد القيم المسموح بها للحصة. إذا وصل عداد السياسة إلى هذه القيمة ، يتم رفض المكالمات اللاحقة إلى أن تتم إعادة ضبط العداد.

في ما يلي ثلاث طرق لضبط عنصر <Allow>:

<Allow count="2000"/> 
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> 

إذا حدّدت كلّ من count وcountRef، تحصل countRef على الأولوية. إذا لم يتم حلّ countRef أثناء التشغيل، يتم استخدام قيمة count.

الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع: عدد صحيح

السمات

السمة الوصف تلقائي التواجد في المنزل
العدد

استخدِم هذا العنصر لتحديد عدد الرسائل المسموح به في الحصة.

على سبيل المثال، تحدد قيمة السمة count‏ 100 وInterval‏ 1 وTimeUnit‏ شهر حصة تبلغ 100 رسالة في الشهر.

2000 اختياري
countRef

استخدِم هذا المتغير لتحديد متغيّر تدفق يحتوي على عدد الرسائل لحصة معيّنة. تكون لسمة countRef الأولوية على سمة count.

لا ينطبق اختياري

عنصر <Allow>/<Class>

يتيح لك عنصر <Class> فرض شروط على قيمة عنصر <Allow> استنادًا إلى قيمة متغيّر مسار. بالنسبة إلى كل علامة فرعية مختلفة من <Allow> لـ <Class>، تحتفظ السياسة بعدّاد مختلف.

لاستخدام العنصر <Class>، حدِّد متغيّر مسار باستخدام السمة ref في علامة <Class>. بعد ذلك، يستخدم Edge قيمة متغيّر تدفق لاختيار إحدى العلامات الفرعية <Allow> لتحديد العدد المسموح به للسياسة. تطابق Edge قيمة متغيّر مسار الإحالة الناجحة مع سمة class لعلامة <Allow>، كما هو موضّح أدناه:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

في هذا المثال، يتم تحديد عداد الحصة الحالي حسب قيمة مَعلمة طلب البحث time_variable التي يتم تمريرها مع كل طلب. يمكن أن يكون لهذا المتغيّر قيمة peak_time أو off_peak_time. إذا كانت مَعلمة طلب البحث تحتوي على قيمة غير صالحة، تعرض السياسة خطأً في انتهاك الحصة.

الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل
ref

استخدِم هذا المقياس لتحديد متغيّر تدفق يحتوي على فئة الحصة لأحد الحصص.

لا ينطبق مطلوب

عنصر <Allow>/<Class>/<Allow>

يحدّد العنصر <Allow> الحدّ الأقصى لعدّاد الحصة الذي يحدّده العنصر <Class>. لكل علامة فرعية مختلفة من <Allow> في <Class>، تحتفظ السياسة بعدّاد مختلف.

على سبيل المثال:

<Allow>
  <Class ref="request.queryparam.time_variable">
    <Allow class="peak_time" count="5000"/>
    <Allow class="off_peak_time" count="1000"/>
  </Class>
</Allow>

في هذا المثال، تحتفظ سياسة الحصة بعددَين من عدادات الحصة باسم peak_time وoff_peak_time.

الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع: لا ينطبق

السمات

السمة الوصف تلقائي التواجد في المنزل
صنف

تحدِّد هذه السمة اسم عداد الحصة.

لا ينطبق مطلوب
العدد تحدّد هذه السمة الحدّ الأقصى للحصة الخاصة بالعداد. لا ينطبق مطلوب

عنصر <Interval>

استخدِم هذا المقياس لتحديد عدد صحيح (مثل 1 أو 2 أو 5 أو 60 وما إلى ذلك) سيتم إقرانه بالملف الشخصي TimeUnit الذي تحدّده (دقيقة أو ساعة أو يوم أو أسبوع أو شهر) لتحديد ملف شخصي زمني يتم خلاله احتساب استخدام الحصة.

على سبيل المثال، إذا كان Interval يساوي 24 مع TimeUnit يساوي hour، يعني ذلك أنّ الحصة سيتم احتسابها على مدار 24 ساعة.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
الإعداد التلقائي: لا ينطبق
الحضور: مطلوب
النوع: عدد صحيح

السمات

السمة الوصف تلقائي التواجد في المنزل
ref

استخدِم هذا المقياس لتحديد متغيّر تدفق يحتوي على الفاصل الزمني لحدود المساحة التخزينية. تكون ref لها الأولوية على قيمة فاصل زمني محدّدة. إذا تم تحديد كلّ من المرجع والقيمة، يحصل المرجع على الأولوية. إذا لم يتمّ حلّ ref أثناء التشغيل، يتمّ استخدام القيمة.

لا ينطبق اختياري

عنصر <TimeUnit>

استخدِم هذه السمة لتحديد وحدة الوقت السارية على الحصة.

على سبيل المثال، إذا كان Interval يساوي 24 مع TimeUnit يساوي hour، يعني ذلك أنّ الحصة سيتم احتسابها على مدار 24 ساعة.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
الإعداد التلقائي: لا ينطبق
الحضور: مطلوب
النوع:

سلسلة. اختَر من بين minute أو hour أو day week أو month.

السمات

السمة الوصف تلقائي التواجد في المنزل
ref استخدِم هذا المتغير لتحديد متغيّر تدفق يحتوي على وحدة الوقت لحصة. ref تكون لها الأولوية على قيمة فاصل صريحة. إذا لم يتم حلّ القيمة ref أثناء التشغيل، يتم استخدام القيمة. لا ينطبق اختياري

عنصر <StartTime>

عند ضبط type على calendar,، يتم تحديد التاريخ والوقت الذي سيبدأ فيه احتساب عداد الحصة، بغض النظر عمّا إذا تم تلقّي أي طلبات من أي تطبيقات.

على سبيل المثال:

<StartTime>2017-7-16 12:00:00</StartTime>
الإعداد التلقائي: لا ينطبق
الحضور: تكون هذه السمة مطلوبة عند ضبط type على calendar.
النوع:

سلسلة بتنسيق التاريخ والوقت ISO 8601

عنصر <Distributed>

يمكن أن يستخدم تثبيت Edge وحدة واحدة أو أكثر من وحدات معالجة الرسائل لمعالجة الطلبات. اضبط هذا العنصر على true لتحديد أنّه على السياسة الاحتفاظ بعداد مركزي ومزامنته باستمرار في جميع معالجات الرسائل. يمكن أن تكون وحدات معالجة الرسائل في مناطق و/أو مناطق توفّر مختلفة.

في حال استخدام القيمة التلقائية false، قد تتجاوز حصتك لأنّه لا تتم مشاركة عدد كلّ معالج رسائل:

<Distributed>true</Distributed>

لضمان مزامنة العدادات وتعديلها عند كل طلب، اضبط <Distributed> و<Synchronous> على true:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
الإعداد التلقائي: خطأ
الحضور: اختياري
النوع: منطقي

عنصر <Synchronous>

اضبط القيمة على true لتعديل عداد الحصة الموزّعة بشكل متزامن. ويعني ذلك أنّه يتم إجراء التعديل على العداد في الوقت نفسه الذي يتم فيه التحقّق من الحصة في طلب موجَّه إلى واجهة برمجة التطبيقات. اضبط القيمة على true إذا كان من الضروري عدم السماح بأي طلبات بيانات من واجهة برمجة التطبيقات تتجاوز الحصة.

اضبط القيمة على false لتعديل عداد الحصة بشكل غير متزامن. وهذا يعني أنّه من الممكن أن يتم تنفيذ بعض طلبات البيانات من واجهة برمجة التطبيقات التي تتجاوز الحصة، وذلك استنادًا إلى وقت تعديل عداد الحصة في المستودع المركزي بشكل غير متزامن. ومع ذلك، لن تواجه التأثيرات المحتملة في الأداء المرتبطة بالتعديلات المتزامنة.

الفاصل الزمني التلقائي للتعديل غير المتزامن هو 10 ثوانٍ. استخدِم العنصر AsynchronousConfiguration لضبط هذا السلوك غير المتزامن.

<Synchronous>false</Synchronous>
الإعداد التلقائي: خطأ
الحضور: اختياري
النوع: منطقي

عنصر <AsynchronousConfiguration>

يتم ضبط فاصل المزامنة بين عدادات الحصة الموزّعة عندما لا يكون عنصر إعداد السياسة <Synchronous> متوفّرًا أو متوفّرًا ومثبّتًا على false.

يمكنك إجراء المزامنة بعد فترة زمنية أو بعد عدد رسائل معيّن، وذلك باستخدام العنصرَين الفرعيين SyncIntervalInSeconds أو SyncMessageCount. لا يمكن أن يندرج مستخدمو إحدى هاتين المجموعتين ضمن المجموعة الأخرى في الوقت نفسه. على سبيل المثال:

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

أو

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
الإعداد التلقائي: SyncIntervalInSeconds = 10 ثوانٍ
الحضور: اختيارية، ويتم تجاهلها عند ضبط <Synchronous> على true.
النوع:

مُجمّع

عنصر <AsynchronousConfiguration>/<SyncIntervalInSeconds>

استخدِم هذا الخيار لإلغاء السلوك التلقائي الذي يتم فيه إجراء التعديلات غير المتزامنة بعد فاصل زمني مدته 10 ثوانٍ.

<AsynchronousConfiguration>
   <SyncIntervalInSeconds>20</SyncIntervalInSeconds>
</AsynchronousConfiguration>

يجب أن يكون فاصل المزامنة أكبر من أو يساوي 10 ثوانٍ كما هو موضّح في موضوع الحدود.

الإعداد التلقائي: 10
الحضور: اختياري
النوع:

عدد صحيح

عنصر <AsynchronousConfiguration>/<SyncMessageCount>

يحدِّد عدد الطلبات في جميع معالجات رسائل Apigee بين تعديلات الحصة.

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>

يحدِّد هذا المثال أنّه يتم تعديل عدد الحصة كل 5 طلبات في كل وحدة معالجة رسائل Apigee Edge.

الإعداد التلقائي: timing fixed in amara
الحضور: اختياري
النوع:

عدد صحيح

عنصر <Identifier>

استخدِم العنصر <Identifier> لضبط السياسة من أجل إنشاء عدّادات فريدة استنادًا إلى متغيّر مسار الإحالة الناجحة.

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

في حال عدم استخدام هذا العنصر، تستخدم السياسة عدادًا واحدًا يتم تطبيقه على الحصة.

تتم أيضًا مناقشة هذا العنصر في المشاركة التالية في منتدى Apigee: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع:

سلسلة

السمات

السمة الوصف تلقائي التواجد في المنزل
ref

تُحدِّد متغيّر مسار يحدِّد المُحتسَب الذي سيتم استخدامه للطلب. يمكن أن يكون المُعرِّف عنوان HTTP أو مَعلمة طلب بحث أو مَعلمة نموذج أو محتوى رسالة فريدًا لكل تطبيق أو مستخدم تطبيق أو مطوّر تطبيق أو منتج واجهة برمجة تطبيقات أو أي ميزة أخرى.

إنّ <Identifier> الأكثر استخدامًا لتحديد التطبيقات بشكل فريد هو client_id. client_id هو اسم آخر لمفتاح واجهة برمجة التطبيقات، أو مفتاح المستهلك، الذي يتم إنشاؤه لتطبيق عند تسجيله في مؤسسة على Apigee Edge. يمكنك استخدام هذا المعرّف إذا فعّلت سياسات التفويض لمفتاح واجهة برمجة التطبيقات أو بروتوكول OAuth في واجهة برمجة التطبيقات.

في بعض الحالات، يجب استرداد إعدادات الحصة حيث لا client_id متوفّرة، مثل عدم توفّر سياسة أمان. في هذه الحالات، يمكنك استخدام سياسة Access Entity لاسترداد إعدادات منتج API المناسبة، ثم استخراج القيم باستخدام ExtractVariables، ثم استخدام متغيّر السياق المستخرَج في سياسة الحصة. لمزيد من المعلومات، يُرجى الاطّلاع على سياسة ملف تعريف هوية الوصول.

لا ينطبق اختياري

عنصر <MessageWeight>

استخدِم هذا الحقل لتحديد الأهمية المخصّصة لكل رسالة. استخدِم وزن الرسالة لزيادة تأثير رسائل الطلب التي تستهلك، على سبيل المثال، موارد حسابية أكثر من غيرها.

على سبيل المثال، تريد احتساب رسائل POST على أنّها "ثقيلة" أو باهظة التكلفة بمقدار الضعف مقارنةً برسائل GET. لذلك، يمكنك ضبط MessageWeight على 2 لطلب POST و1 لطلب GET. يمكنك أيضًا ضبط MessageWeight على 0 لكي لا يؤثر الطلب في العداد. في هذا المثال، إذا كانت الحصة 10 رسائل في الدقيقة وكان MessageWeight لطلبات POST هو 2، ستسمح الحصة بتقديم 5 طلبات POST في أي فاصل زمني مدته 10 دقائق. يتم رفض أي طلب إضافي، POST أو GET، قبل إعادة ضبط العداد.

يجب تحديد قيمة تمثّل MessageWeight باستخدام متغيّر مسار، ويمكن استخراجها من رؤوس HTTP أو مَعلمات طلب البحث أو الحمولة لطلب XML أو JSON أو أي متغيّر مسار آخر. على سبيل المثال، يمكنك ضبطه في عنوان باسم weight:

<MessageWeight ref="message_weight"/>
الإعداد التلقائي: لا ينطبق
الحضور: اختياري
النوع:

عدد صحيح

متغيّرات مسار الإحالة الناجحة

تتم تعبئة متغيّرات مسار الإحالة الناجحة المحدّدة مسبقًا تلقائيًا عند تنفيذ سياسة حصة. لمزيد من المعلومات عن متغيّرات Flow، يُرجى الاطّلاع على مرجع المتغيّرات.

المتغيّرات النوع الأذونات الوصف
ratelimit.{policy_name}.allowed.count طويل قراءة فقط عرض عدد الحصص المسموح بها
ratelimit.{policy_name}.used.count طويل قراءة فقط عرض الحصة الحالية المستخدَمة خلال فترة حصة
ratelimit.{policy_name}.available.count طويل قراءة فقط لعرض عدد الحصص المتاحة في فاصل الحصة
ratelimit.{policy_name}.exceed.count طويل قراءة فقط يعرض القيمة 1 بعد تجاوز الحصة.
ratelimit.{policy_name}.total.exceed.count طويل قراءة فقط تعرِض القيمة 1 بعد تجاوز الحصة.
ratelimit.{policy_name}.expiry.time طويل قراءة فقط

تعرِض هذه السمة التوقيت العالمي المنسَّق بالمللي ثانية، ما يحدِّد وقت انتهاء صلاحية الحصة وبدء فاصل الحصة الجديد.

عندما يكون نوع سياسة الحصة هو rollingwindow، تكون هذه القيمة غير صالحة لأنّ الفاصل الزمني للحصة لا تنتهي صلاحيته أبدًا.

ratelimit.{policy_name}.identifier سلسلة قراءة فقط عرض مرجع المعرّف (العميل) المرفق بالسياسة
ratelimit.{policy_name}.class سلسلة قراءة فقط عرض الفئة المرتبطة بمعرّف العميل
ratelimit.{policy_name}.class.allowed.count طويل قراءة فقط عرض عدد الحصص المسموح بها المحدّد في الفئة
ratelimit.{policy_name}.class.used.count طويل قراءة فقط عرض الحصة المستخدَمة ضمن فئة
ratelimit.{policy_name}.class.available.count طويل قراءة فقط لعرض عدد الحصص المتاحة في الفئة
ratelimit.{policy_name}.class.exceed.count طويل قراءة فقط عرض عدد الطلبات التي تتجاوز الحدّ الأقصى في الفئة في الفاصل الزمني للحصة الحالية
ratelimit.{policy_name}.class.total.exceed.count طويل قراءة فقط تعرِض هذه السمة إجمالي عدد الطلبات التي تتجاوز الحدّ الأقصى في الفئة على مستوى كل فواصل قياس class.exceed.count، لذا فهي مجموع class.exceed.count لكل فواصل قياس class.exceed.count.
ratelimit.{policy_name}.failed منطقي قراءة فقط

يشير إلى ما إذا كانت السياسة قد تعذّر تطبيقها أم لا (صحيح أو خطأ).

مرجع الخطأ

يصف هذا القسم رموز الخطأ ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تم ضبطها من خلال Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. من المهم معرفة هذه المعلومات إذا كنت تضع قواعد خطأ التعامل مع الأخطاء. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على ما تحتاج إلى معرفته حول أخطاء السياسة والتعامل مع المعالجة والأخطاء.

أخطاء بيئة التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب إصلاح
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 يحدث إذا لم يتم تحديد العنصر <Interval> ضمن سياسة الحصة. هذا العنصر إلزاميًا ويتم استخدامه لتحديد الفاصل الزمني الساري على الحصة. الفاصل الزمني يمكن أن تكون دقائق أو ساعات أو أيام أو أسابيع أو أشهر كما هو محدّد في العنصر <TimeUnit>.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 يحدث إذا لم يتم تحديد العنصر <TimeUnit> ضمن سياسة الحصة. هذا العنصر إلزاميًا ويتم استخدامه لتحديد الوحدة الزمنية السارية على الحصة. الفاصل الزمني يمكن أن تكون بالدقائق أو الساعات أو الأيام أو الأسابيع أو الأشهر.
policies.ratelimit.InvalidMessageWeight 500 يحدث إذا تم تحديد قيمة العنصر <MessageWeight> من خلال متغير التدفق غير صالح (قيمة لا تمثل عددًا صحيحًا).
policies.ratelimit.QuotaViolation 500 تم تجاوز الحدّ الأقصى للحصة المخصّصة لك. لا ينطبق

أخطاء النشر

اسم الخطأ السبب إصلاح
InvalidQuotaInterval إذا كان الفاصل الزمني للحصة المحددة في العنصر <Interval> غير صحيح عدد صحيح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. على سبيل المثال، إذا كان فاصل الحصة المحددة هي 0.1 في العنصر <Interval>، فإن نشر تعذّر الخادم الوكيل لواجهة برمجة التطبيقات.
InvalidQuotaTimeUnit إذا كانت الوحدة الزمنية المحدّدة في العنصر <TimeUnit> غير متوافقة، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. الوحدات الزمنية المتوافقة هي minute، hour وday وweek وmonth
InvalidQuotaType إذا كان نوع الحصة المحدّدة من خلال السمة type في <Quota> غير صالح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. تشير رسالة الأشكال البيانية إنّ أنواع الحصص المسموح بها هي default وcalendar وflexi وrollingwindow.
InvalidStartTime إذا كان تنسيق الوقت المحدّد في العنصر <StartTime> هو غير صالح، فسيفشل نشر الخادم الوكيل لواجهة برمجة التطبيقات. التنسيق الصالح هو yyyy-MM-dd HH:mm:ss. وهو تنسيق التاريخ والوقت وفقًا لمعيار ISO 8601. بالنسبة على سبيل المثال، إذا كان الوقت المحدّد في العنصر <StartTime> هو 7-16-2017 12:00:00 ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات.
StartTimeNotSupported إذا تم تحديد العنصر <StartTime> وكان نوع حصته غير محدد calendar، ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. العنصر <StartTime> هو متوافقة فقط مع نوع الحصة calendar. على سبيل المثال، إذا تم ضبط السمة type إلى flexi أو rolling window في العنصر <Quota>، ثم فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.
InvalidTimeUnitForDistributedQuota إذا تم ضبط العنصر <Distributed> على true وضبط العنصر <TimeUnit> على second، ثم تعذّر نشر الخادم الوكيل لواجهة برمجة التطبيقات. الوحدة الزمنية second غير صالحة لـ حصة موزعة.
InvalidSynchronizeIntervalForAsyncConfiguration إذا كانت القيمة المحدّدة للعنصر <SyncIntervalInSeconds> داخل السمة العنصر <AsynchronousConfiguration> في سياسة الحصة أقل من صفر، فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.
InvalidAsynchronizeConfigurationForSynchronousQuota في حال ضبط قيمة العنصر <AsynchronousConfiguration> على true في سياسة الحصة، والتي يحتوي على تهيئة غير متزامنة محددة باستخدام العنصر <AsynchronousConfiguration>، ثم فشل نشر الخادم الوكيل لواجهة برمجة التطبيقات.

متغيّرات الأخطاء

يتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ. يمكنك الاطّلاع على مقالة ما تحتاج إلى معرفته للحصول على مزيد من المعلومات. حول أخطاء السياسة.

المتغيرات المكان مثال
fault.name="fault_name" fault_name هو اسم الخطأ، كما هو موضَّح في جدول أخطاء وقت التشغيل أعلاه. اسم الخطأ هو الجزء الأخير من رمز الخطأ. fault.name Matches "QuotaViolation"
ratelimit.policy_name.failed policy_name هو الاسم الذي يحدّده المستخدم للسياسة التي أدّت إلى حدوث الخطأ. ratelimit.QT-QuotaPolicy.failed = true

مثال على استجابة الخطأ

{  
   "fault":{  
      "detail":{  
         "errorcode":"policies.ratelimit.QuotaViolation"
      },
      "faultstring":"Rate limit quota violation. Quota limit  exceeded. Identifier : _default"
   }
}

مثال على قاعدة الخطأ

<FaultRules>
    <FaultRule name="Quota Errors">
        <Step>
            <Name>JavaScript-1</Name>
            <Condition>(fault.name Matches "QuotaViolation") </Condition>
        </Step>
        <Condition>ratelimit.Quota-1.failed=true</Condition>
    </FaultRule>
</FaultRules>

المخططات

مواضيع ذات صلة

سياسة إعادة ضبط الحصة

سياسة SpikeArrest

مقارنة بين سياسات الحصة ومنع الارتفاعات المفاجئة في عدد الطلبات وحدود معدّل عمليات التنفيذ المتزامنة