سياسة الحصة

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

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

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

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

الفيديوهات الطويلة

تتناول هذه الفيديوهات إدارة الحصص وفقًا لسياسة الحصص:

مقدمة (New Edge)

مقدمة (كلاسيكي Edge)

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

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

وزن الرسالة

التقويم

نافذة دوّارة

مرنة

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

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

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

عيّنات

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

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

<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>

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

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

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

في المثال أعلاه، يستخدم الخادم الوكيل لواجهة برمجة التطبيقات الذي يحتوي على سياسة الحصة سياسة التحقّق من واجهة برمجة التطبيقات، المسماة 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>

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

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

  • متغيرات التدفق
  • المواقع في منتج واجهة برمجة التطبيقات أو التطبيق أو المطوّر
  • خريطة القيم الأساسية (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>. في هذا المثال، يبدأ احتساب الحصة في 18 شباط (فبراير) 2017 الساعة 10:30 صباحًا بتوقيت غرينتش، وتتم إعادة تحميلها كل 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 التالية لعرض قيم متغيّرات تدفق الحصة كعناوين استجابة:

<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> على دقيقة أو ساعة أو يوم أو أسبوع أو شهر.

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

وبدلاً من ذلك، يمكنك تحديد سياسات "حصة" متعددة في الخادم الوكيل لواجهة برمجة التطبيقات. وتستطيع كل سياسة حصة عدّاد خاص بها استنادًا إلى سمة 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"/>

إذا كنت تستخدم سياسة التحقّق من صحة مفتاح واجهة برمجة التطبيقات، أو سياسات OAuthV2 مع رموز OAuth المميزة، يمكنك استخدام المعلومات الواردة في مفتاح واجهة برمجة التطبيقات أو الرمز المميّز لتحديد عدّادات فردية لسياسة الحصة نفسها. على سبيل المثال، تستخدم العلامة <Identifier> التالية متغيّر مسار client_id لسياسة التحقّق من واجهة برمجة التطبيقات باسم 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. يحدّد كل نوع وقت بدء عدّاد الحصة ووقت إعادة ضبطه، كما هو موضّح في الجدول التالي:

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

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

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

على سبيل المثال، يمكنك تحديد فترة ساعتين تسمح بـ 1000 طلب. يصل طلب جديد في الساعة 4:45 بعد الظهر.تحتسب السياسة الحصة المسموح بها خلال فترة الساعتَين الماضيتَين، ما يعني عدد الطلبات منذ الساعة 2:45 بعد الظهر. إذا لم يتم تجاوز حدّ الحصة المسموح بها خلال الساعتين، سيتم السماح بالطلب.

بَعْدَ دَقِيقَة وَاحِدَة، السَّاعَة 4:46 بَعْدِ الضُّهْرْ، وصلَ طلب آخر. تحسب السياسة الآن عدد الحصص منذ الساعة 2:46 بعد الظهر لتحديد ما إذا تم تجاوز الحدّ الأقصى.

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

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

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

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

  • يتم تنفيذ التدفق A -> يتم تنفيذ MySharePolicy وعدّاده = 1
  • يتم تنفيذ التدفق B -> يتم تنفيذ MyDataPolicy وعدّاده = 2
  • يتم تنفيذ التدفق A -> يتم تنفيذ MyDataPolicy وعدّاده = 3
  • يتم تنفيذ التدفق C -> يتم تنفيذ My غرفPolicy وعدّاده = 4
  • يتم تنفيذ التدفق A -> يتم تنفيذ MyPortPolicy وعدّاده = 5

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

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

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

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

الترميز الزمني

ويتم ضبط جميع أوقات الحصة على المنطقة الزمنية للتوقيت العالمي المنسَّق.

يتّبع طريقة كتابة وقت الحصة طريقة تدوين التاريخ المعياري الدولي المحدّد في المعيار الدولي 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. والأسلوب الثاني هو عادةً الترميز المفضّل.

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

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

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

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

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

مرجع العنصر

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

<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 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 لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

false إجراء اختياري
enabled

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

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

صحيح إجراء اختياري
async

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

false منهي العمل به

العنصر <DisplayName>

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

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

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
Type سلسلة

عنصر <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> الفرعية لتحديد العدد المسموح به لهذه السياسة. تتطابق الحافة قيمة متغيّر التدفق مع السمة 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. إذا كانت مَعلمة طلب البحث تحتوي على قيمة غير صالحة، تعرِض السياسة خطأ بسبب انتهاك الحصة.

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

السمات

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

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

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

العنصر <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 الذي تحدّده (الدقيقة أو الساعة أو اليوم أو الأسبوع أو الشهر) لتحديد فترة زمنية تحسب خلالها Edge استخدام الحصة.

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

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

السمات

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

تُستخدم لتحديد متغيّر التدفق الذي يحتوي على الفاصل الزمني لحصة معيّنة. ويكون للقاعدة 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 في وقت التشغيل، يتم استخدام القيمة. لا ينطبق اختياري

عنصر <StartTime>

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

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

مثال:

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

يجب إدخال القيمة بتنسيق ISO 8601 للتاريخ والوقت.

العنصر <Distributed>

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

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

<Distributed>true</Distributed>

لضمان مزامنة العدّادات وتعديلها في كل طلب، اضبط <Distributed> و<Synchronous> على "صحيح":

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

عنصر <Synchronous>

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

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

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

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

العنصر <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"/>
الخيار التلقائي: لا ينطبق
الحضور: اختياري
النوع:

سلسلة

السمات

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

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

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

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

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

عنصر <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"/>
الخيار التلقائي: لا ينطبق
الحضور: اختياري
النوع:

عدد صحيح

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

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

المتغيرات النوع الأذونات الوصف
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 لكل الفواصل الزمنية للحصة.
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

مقارنة سياسات الحصص والحدّ الأقصى للارتفاع والحدّ الأقصى للسعر المتزامن