سیاست سهمیه بندی

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

چی

از خط مشی Quota برای پیکربندی تعداد پیام های درخواستی که یک پروکسی API در یک دوره زمانی مجاز می دهد، مانند دقیقه، ساعت، روز، هفته یا ماه استفاده کنید. می‌توانید سهمیه را برای همه برنامه‌هایی که به پراکسی API دسترسی دارند یکسان تنظیم کنید، یا می‌توانید سهمیه را بر اساس:

  • محصولی که حاوی پروکسی API است
  • برنامه درخواست کننده API
  • توسعه دهنده برنامه
  • خیلی معیارهای دیگه

از Quota برای محافظت در برابر افزایش ترافیک کلی استفاده نکنید. برای آن، از خط مشی Spike Arrest استفاده کنید. به سیاست دستگیری Spike مراجعه کنید.

ویدیوها

این ویدیوها مدیریت سهمیه را با خط مشی سهمیه معرفی می کنند:

مقدمه (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>

سهمیه های پویا به شما امکان می دهد یک خط مشی سهمیه را پیکربندی کنید که تنظیمات مختلف سهمیه را بر اساس اطلاعات ارسال شده به خط مشی سهمیه اعمال می کند. اصطلاح دیگری برای تنظیمات سهمیه در این زمینه "طرح خدمات" است. سهمیه پویا "طرح خدمات" برنامه ها را بررسی می کند و سپس آن تنظیمات را اعمال می کند.

نکته : اگر برای یک عنصر هم مقدار و هم مرجع تعیین کنید، ارجاع اولویت را دریافت می کند. اگر مرجع در زمان اجرا حل نشد، از مقدار استفاده می شود.

به عنوان مثال، هنگامی که یک محصول API ایجاد می کنید، می توانید به صورت اختیاری محدودیت سهمیه مجاز، واحد زمانی و بازه زمانی را تنظیم کنید. با این حال، تنظیم این مقادیر در محصول API استفاده از آنها را در یک پراکسی API اعمال نمی کند. همچنین باید یک خط مشی Quota به پراکسی API اضافه کنید که این مقادیر را می خواند. برای اطلاعات بیشتر به ایجاد محصولات API مراجعه کنید.

در مثال بالا، پروکسی API حاوی خط‌مشی Quota از یک خط‌مشی VerifyAPIKey به نام verify-api-key برای تأیید اعتبار کلید API ارسال شده در یک درخواست استفاده می‌کند. سپس خط مشی Quota به متغیرهای جریان از خط مشی VerifyAPIKey دسترسی پیدا می کند تا مقادیر سهمیه تنظیم شده در محصول API را بخواند. برای اطلاعات بیشتر در مورد متغیرهای جریان VerifyAPIKey، به تأیید خط مشی کلید API مراجعه کنید.

گزینه دیگر این است که ویژگی های سفارشی را روی توسعه دهندگان یا برنامه ها تنظیم کنید و سپس آن مقادیر را در خط مشی Quota بخوانید. به عنوان مثال، شما می خواهید مقادیر مختلف سهمیه برای هر توسعه دهنده را تنظیم کنید. در این حالت، شما ویژگی‌های سفارشی را بر روی توسعه‌دهنده تنظیم می‌کنید که شامل حد، واحد زمانی و فاصله است. سپس به این مقادیر در خط مشی Quota همانطور که در زیر نشان داده شده است ارجاع می دهید:

<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 برای ارجاع به ویژگی های سفارشی تنظیم شده روی توسعه دهنده استفاده می کند.

برای تنظیم پارامترهای خط مشی Quota می توانید از هر متغیری استفاده کنید. این متغیرها می‌توانند از زیر آمده باشند:

  • متغیرهای جریان
  • ویژگی‌های محصول، برنامه یا برنامه‌نویس API
  • نقشه ارزش کلیدی (KVM)
  • هدر، پارامتر پرس و جو، پارامتر فرم و غیره

برای هر پراکسی API، می‌توانید یک خط‌مشی سهمیه اضافه کنید که یا به همان متغیری که همه خط‌مشی‌های دیگر سهمیه در همه پراکسی‌های دیگر ارجاع می‌دهد، یا خط‌مشی Quota می‌تواند به متغیرهای منحصربه‌فرد برای آن خط‌مشی و پراکسی اشاره کند.

زمان شروع

<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> صریح تعریف کنید. مقدار زمان زمان GMT است، نه زمان محلی. اگر مقدار <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>

یک پراکسی API به متغیرهای جریان تنظیم شده توسط خط مشی Quota دسترسی دارد. می‌توانید به این متغیرهای جریان در پراکسی API دسترسی داشته باشید تا پردازش مشروط را انجام دهید، خط‌مشی را با نزدیک شدن به محدودیت سهمیه نظارت کنید، شمارنده سهمیه فعلی را به یک برنامه برگردانید یا به دلایل دیگر.

از آنجایی که دسترسی به متغیرهای جریان برای خط مشی بر اساس ویژگی name سیاست ها است، برای خط مشی بالا به نام QuotaPolicy به متغیرهای جریان آن به شکل زیر دسترسی دارید:

  • ratelimit.QuotaPolicy.allowed.count : تعداد مجاز.
  • ratelimit.QuotaPolicy.used.count : مقدار شمارنده فعلی.
  • ratelimit.QuotaPolicy.expiry.time : زمان UTC زمانی که شمارنده تنظیم مجدد می شود.

بسیاری از متغیرهای جریان دیگر وجود دارند که می توانید به آنها دسترسی داشته باشید، همانطور که در زیر توضیح داده شده است.

برای مثال، می‌توانید از سیاست AssignMessage زیر برای برگرداندن مقادیر متغیرهای Quota flow به عنوان سرصفحه‌های پاسخ استفاده کنید:

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

از این کد نمونه برای اجرای سهمیه 10000 تماس در هر ساعت استفاده کنید. این خط‌مشی شمارنده سهمیه را در بالای هر ساعت بازنشانی می‌کند. اگر پیشخوان قبل از پایان ساعت به سهمیه 10000 تماس برسد، تماس های بیش از 10000 رد می شود.

به عنوان مثال، اگر شمارنده در 2017-07-08 07:00:00 شروع شود، سپس در 2017-07-08 08:00:00 (1 ساعت از زمان شروع) به 0 بازنشانی می شود. اگر اولین پیام در 2017-07-08 07:35:28 دریافت شود و تعداد پیام‌ها قبل از 2017-07-08 08:00:00 10,000 برسد، تماس‌های فراتر از این تعداد رد می‌شوند تا زمانی که شمارش در بالای صفحه بازنشانی شود. ساعت

زمان تنظیم مجدد شمارنده بر اساس ترکیب <Interval> و <TimeUnit> است. برای مثال، اگر <Interval> را برای <TimeUnit> ساعت روی 12 تنظیم کنید، شمارنده هر دوازده ساعت یکبار بازنشانی می‌شود. می توانید <TimeUnit> را روی دقیقه، ساعت، روز، هفته یا ماه تنظیم کنید.

می‌توانید این خط‌مشی را در چندین مکان در پروکسی API خود ارجاع دهید. به عنوان مثال، می توانید آن را روی Proxy PreFlow قرار دهید تا در هر درخواستی اجرا شود. یا، می‌توانید آن را روی چندین جریان در پروکسی API قرار دهید. اگر از این خط‌مشی در چندین مکان در پراکسی استفاده می‌کنید، یک شمارنده واحد دارد که توسط همه موارد خط‌مشی به‌روزرسانی می‌شود.

از طرف دیگر، می توانید چندین خط مشی Quota را در پروکسی 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>

به‌طور پیش‌فرض، یک خط‌مشی Quota یک شمارنده واحد را برای پراکسی API، بدون توجه به منشأ درخواست، تعریف می‌کند. همچنین، می‌توانید از ویژگی <Identifier> با خط مشی Quota برای نگهداری شمارنده‌های جداگانه بر اساس مقدار ویژگی <Identifier> استفاده کنید.

به عنوان مثال، از تگ <Identifier> برای تعریف شمارنده های جداگانه برای هر شناسه مشتری استفاده کنید. در یک درخواست از پروکسی شما، برنامه سرویس گیرنده یک سرصفحه حاوی clientID را ارسال می کند، همانطور که در مثال بالا نشان داده شده است.

شما می توانید هر متغیر جریان را به ویژگی <Identifier> مشخص کنید. به عنوان مثال، می توانید مشخص کنید که یک پارامتر پرس و جو به نام id حاوی شناسه منحصر به فرد باشد:

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

اگر از خط‌مشی VerifyAPIKey برای اعتبارسنجی کلید API یا خط‌مشی‌های OAuthV2 با نشانه‌های OAuth استفاده می‌کنید، می‌توانید از اطلاعات موجود در کلید یا نشانه API برای تعریف شمارنده‌های فردی برای همان خط‌مشی سهمیه استفاده کنید. به عنوان مثال، تگ <Identifier> زیر از متغیر جریان client_id یک خط مشی VerifyAPIKey به نام verify-api-key استفاده می کند:

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

اکنون هر مقدار یکتا client_id شمارنده خود را در خط مشی Quota تعریف می کند.

کلاس

<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 باشد. اگر هدر یک مقدار نامعتبر داشته باشد، خط‌مشی خطای نقض سهمیه را برمی‌گرداند.


درباره سیاست سهمیه بندی

Quota مجموعه ای از پیام های درخواستی است که یک پروکسی API می تواند در یک بازه زمانی مانند دقیقه، ساعت، روز، هفته یا ماه مدیریت کند. این خط‌مشی شمارنده‌هایی دارد که تعداد درخواست‌های دریافت‌شده توسط پراکسی API را محاسبه می‌کند. این قابلیت به ارائه‌دهندگان API امکان می‌دهد محدودیت‌هایی را بر تعداد تماس‌های API برقرار شده توسط برنامه‌ها در یک بازه زمانی اعمال کنند. برای مثال، با استفاده از خط‌مشی‌های سهمیه، می‌توانید برنامه‌ها را به 1 درخواست در دقیقه یا به 10000 درخواست در ماه محدود کنید.

به عنوان مثال، اگر یک سهمیه به عنوان 10000 پیام در ماه تعریف شود، محدودیت نرخ پس از پیام 10000 شروع می شود. مهم نیست که 10000 پیام در روز اول آن دوره حساب شده باشد یا آخرین روز. تا زمانی که شمارشگر سهمیه به طور خودکار در پایان بازه زمانی مشخص شده بازنشانی شود، یا تا زمانی که سهمیه به صراحت با استفاده از سیاست بازنشانی سهمیه بازنشانی شود، هیچ منطقه درخواست اضافی مجاز نیست.

تغییری در Quota به نام SpikeArrest از افزایش ناگهانی ترافیک (یا انفجار) که می تواند ناشی از افزایش ناگهانی استفاده، کلاینت های باگ یا حملات مخرب باشد، جلوگیری می کند. برای اطلاعات بیشتر در مورد SpikeArrest، به سیاست Spike Arrest مراجعه کنید.

سهمیه ها برای پراکسی های API منفرد اعمال می شود و بین پراکسی های API توزیع نمی شود. به عنوان مثال، اگر سه پراکسی API در یک محصول API دارید، یک سهمیه واحد بین هر سه به اشتراک گذاشته نمی‌شود، حتی اگر هر سه از یک پیکربندی خط مشی سهمیه استفاده کنند.

انواع خط مشی سهمیه

خط مشی Quota از چندین نوع مختلف خط مشی پشتیبانی می کند: پیش فرض، calendar ، flexi ، و rollingwindow . همانطور که در جدول زیر نشان داده شده است، هر نوع مشخص می کند که شمارنده سهمیه چه زمانی شروع می شود و چه زمانی بازنشانی می شود:

واحد زمان تنظیم مجدد پیش فرض (یا تهی). تنظیم مجدد تقویم تنظیم مجدد فلکسی
دقیقه شروع دقیقه بعد یک دقیقه بعد از <StartTime> یک دقیقه پس از اولین درخواست
ساعت بالای ساعت آینده یک ساعت بعد از <StartTime> یک ساعت پس از اولین درخواست
روز نیمه شب GMT روز جاری 24 ساعت پس از <StartTime> 24 ساعت پس از اولین درخواست
هفته نیمه شب GMT یکشنبه در پایان هفته یک هفته بعد از <StartTime> یک هفته پس از اولین درخواست
ماه نیمه شب GMT آخرین روز ماه یک ماه (28 روز) پس از <StartTime> یک ماه (28 روز) پس از اولین درخواست

برای type="calendar" ، باید مقدار <StartTime> را مشخص کنید.

جدول مقدار نوع rollingwindow را فهرست نمی کند. سهمیه های پنجره نورد با تنظیم اندازه یک سهمیه "پنجره" مانند پنجره یک ساعته یا یک روزه کار می کنند. هنگامی که یک درخواست جدید وارد می شود، خط مشی تعیین می کند که آیا از سهمیه در "پنجره" زمانی گذشته فراتر رفته است یا خیر.

به عنوان مثال، شما یک پنجره دو ساعته تعریف می کنید که اجازه 1000 درخواست را می دهد. یک درخواست جدید در ساعت 4:45 بعد از ظهر وارد می‌شود. این خط‌مشی تعداد سهمیه را برای پنجره دو ساعت گذشته محاسبه می‌کند، یعنی تعداد درخواست‌ها از ساعت 2:45 بعد از ظهر. اگر در آن پنجره دو ساعته از حد نصاب تجاوز نکرده باشد، درخواست مجاز است.

یک دقیقه بعد، در ساعت 4:46 بعد از ظهر، درخواست دیگری وارد می‌شود. اکنون این خط‌مشی تعداد سهمیه را از ساعت 2:46 بعد از ظهر محاسبه می‌کند تا تعیین کند که آیا از حد مجاز فراتر رفته است یا خیر.

برای نوع rollingwindow ، شمارنده هرگز بازنشانی نمی‌شود، اما در هر درخواست مجدداً محاسبه می‌شود.

درک سهمیه شمار

به طور پیش‌فرض، یک خط‌مشی Quota یک شمارنده واحد را حفظ می‌کند، صرف نظر از اینکه چند بار به آن در یک پراکسی API ارجاع می‌دهید. نام شمارنده سهمیه بر اساس ویژگی name سیاست است.

به عنوان مثال، شما یک خط مشی Quota به نام MyQuotaPolicy با محدودیت 5 درخواست ایجاد می کنید و آن را روی چندین جریان (جریان A، B و C) در پروکسی API قرار می دهید. حتی اگر در جریان‌های متعدد استفاده می‌شود، یک شمارنده واحد را حفظ می‌کند که توسط همه موارد سیاست به‌روزرسانی می‌شود:

  • جریان A اجرا می شود -> MyQuotaPolicy اجرا می شود و شمارنده آن = 1
  • جریان B اجرا می شود -> MyQuotaPolicy اجرا می شود و شمارنده آن = 2
  • جریان A اجرا می شود -> MyQuotaPolicy اجرا می شود و شمارنده آن = 3
  • جریان C اجرا می شود -> MyQuotaPolicy اجرا می شود و شمارنده آن = 4
  • جریان A اجرا می شود -> MyQuotaPolicy اجرا می شود و شمارنده آن = 5

درخواست بعدی برای هر یک از سه جریان رد می شود زیرا شمارنده سهمیه به حد مجاز خود رسیده است.

استفاده از یک خط مشی Quota در بیش از یک مکان در یک جریان پراکسی API، که می تواند ناخواسته باعث شود تا Quota سریعتر از آنچه انتظار داشتید تمام شود، یک ضدالگو است که در The Book of Apigee Edge Antipatterns توضیح داده شده است.

از طرف دیگر، می توانید چندین خط مشی Quota را در پروکسی API خود تعریف کنید و از یک خط مشی متفاوت در هر جریان استفاده کنید. هر خط مشی سهمیه شمارنده خود را بر اساس ویژگی name خط مشی حفظ می کند.

یا از عناصر <Class> یا <Identifier> در خط مشی Quota برای تعریف شمارنده های متعدد و منحصر به فرد در یک خط مشی واحد استفاده کنید. با استفاده از این عناصر، یک خط‌مشی واحد می‌تواند شمارنده‌های مختلفی را بر اساس برنامه‌ای که درخواست می‌کند، توسعه‌دهنده برنامه درخواست‌کننده، شناسه مشتری یا شناسه مشتری دیگر و موارد دیگر را حفظ کند. برای اطلاعات بیشتر در مورد استفاده از عناصر <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

می‌توانید محدودیت‌های سهمیه را در تنظیمات محصول API تنظیم کنید. این محدودیت ها به طور خودکار سهمیه را اعمال نمی کنند. در عوض، می‌توانید به تنظیمات سهمیه محصول در خط‌مشی سهمیه اشاره کنید. در اینجا برخی از مزایای تعیین سهمیه روی محصول برای مرجع سیاست های سهمیه آورده شده است:

  • خط‌مشی‌های سهمیه می‌توانند از یک تنظیم یکسان در همه پراکسی‌های API در محصول API استفاده کنند.
  • می‌توانید تغییرات زمان اجرا را در تنظیمات سهمیه در یک محصول API ایجاد کنید، و خط‌مشی‌های سهمیه‌ای که به طور خودکار به مقدار ارجاع می‌دهند دارای مقادیر سهمیه به‌روز هستند.

برای اطلاعات بیشتر در مورد استفاده از تنظیمات سهمیه از یک محصول API، به مثال "سهمیه پویا" در بالا مراجعه کنید. .

برای اطلاعات در مورد پیکربندی محصولات API با محدودیت های سهمیه، به ایجاد محصولات API مراجعه کنید.

مرجع عنصر

در زیر عناصر و ویژگی هایی وجود دارد که می توانید در این خط مشی پیکربندی کنید. توجه داشته باشید که برخی از ترکیبات عناصر متقابلاً منحصر به فرد هستند یا مورد نیاز نیستند. برای استفاده خاص به نمونه ها مراجعه کنید. متغیرهای verifyapikey.VerifyAPIKey.apiproduct.* زیر به‌طور پیش‌فرض در دسترس هستند زمانی که از یک خط‌مشی Verify API Key به نام «VerifyAPIKey» برای بررسی کلید API برنامه در درخواست استفاده می‌شود. مقادیر متغیر از تنظیمات سهمیه روی محصول API می آیند که کلید با آن مرتبط است، همانطور که در دریافت تنظیمات سهمیه از پیکربندی محصول API توضیح داده شده است.

<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> تعیین می کنید. مثلا 1 روز وقتی درخواستی وارد می‌شود، Edge به زمان دقیق درخواست (مثلاً 5:01 بعد از ظهر) نگاه می‌کند، تعداد درخواست‌هایی را که بین آن زمان تا 5:01 بعد از ظهر روز قبل (1 روز) وارد شده‌اند، می‌شمارد و تعیین می‌کند که آیا سهمیه است یا خیر. در طول آن پنجره از آن فراتر رفته است.
  • flexi : سهمیه ای را پیکربندی کنید که باعث می شود شمارنده با دریافت اولین پیام درخواست از یک برنامه شروع شود و بر اساس مقادیر <Interval>, و <TimeUnit> بازنشانی شود.
تقویم اختیاری

جدول زیر ویژگی هایی را توصیف می کند که برای همه عناصر اصلی خط مشی مشترک هستند:

صفت توضیحات پیش فرض حضور
name

نام داخلی سیاست. مقدار مشخصه name می تواند شامل حروف، اعداد، فاصله، خط تیره، زیرخط و نقطه باشد. این مقدار نمی تواند بیش از 255 کاراکتر باشد.

در صورت تمایل، از عنصر <DisplayName> برای برچسب گذاری خط مشی در ویرایشگر پروکسی UI مدیریت با نامی به زبان طبیعی دیگر استفاده کنید.

N/A مورد نیاز
continueOnError

برای بازگرداندن خطا در صورت شکست خط مشی، روی false تنظیم کنید. این رفتار مورد انتظار برای اکثر سیاست ها است.

روی true تنظیم کنید تا اجرای جریان حتی پس از شکست خط مشی ادامه یابد.

نادرست اختیاری
enabled

برای اجرای خط مشی روی true تنظیم کنید.

برای خاموش کردن خط مشی، روی false تنظیم کنید. این سیاست حتی اگر به یک جریان وابسته باشد اجرا نخواهد شد.

درست است اختیاری
async

این ویژگی منسوخ شده است.

نادرست منسوخ شده است

عنصر <DisplayName>

علاوه بر ویژگی name برای برچسب‌گذاری خط‌مشی در ویرایشگر پروکسی رابط کاربری مدیریت با نامی متفاوت و به زبان طبیعی، از آن استفاده کنید.

<DisplayName>Policy Display Name</DisplayName>
پیش فرض

N/A

اگر این عنصر را حذف کنید، از مقدار ویژگی 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 استفاده می شود.

پیش فرض: N/A
حضور: اختیاری
نوع: عدد صحیح

صفات

صفت توضیحات پیش فرض حضور
شمارش

برای تعیین تعداد پیام برای سهمیه استفاده کنید.

به عنوان مثال، مقدار مشخصه 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>

در این مثال، شمارنده سهمیه فعلی با مقدار پارامتر query time_variable که با هر درخواست ارسال می شود، تعیین می شود. آن متغیر می تواند مقدار peak_time یا off_peak_time داشته باشد. اگر پارامتر پرس و جو حاوی یک مقدار نامعتبر باشد، خط مشی یک خطای نقض سهمیه را برمی گرداند.

پیش فرض: N/A
حضور: اختیاری
نوع: N/A

صفات

صفت توضیحات پیش فرض حضور
رجوع کنید

برای تعیین یک متغیر جریان حاوی کلاس سهمیه برای یک سهمیه استفاده کنید.

هیچ کدام مورد نیاز

عنصر <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>

در این مثال، خط مشی Quota دو شمارنده سهمیه به نام‌های peak_time و off_peak_time را حفظ می‌کند.

پیش فرض: N/A
حضور: اختیاری
نوع: N/A

صفات

صفت توضیحات پیش فرض حضور
کلاس

نام شمارنده سهمیه را مشخص می کند.

هیچ کدام مورد نیاز
شمارش حد سهمیه پیشخوان را مشخص می کند. هیچ کدام مورد نیاز

عنصر <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, تاریخ و زمانی را مشخص می کند که شمارشگر سهمیه شروع به شمارش می کند، صرف نظر از اینکه درخواستی از هر برنامه ای دریافت شده باشد یا خیر.

هنگامی که type به طور صریح روی calendar, تنظیم شده است، باید یک StartTime صریح ارائه دهید، نمی توانید از یک مرجع برای متغیر جریان استفاده کنید، اگر مقدار StartTime را زمانی که مقدار type تنظیم نشده است تعیین کنید، یک خطا دریافت می کنید.

به عنوان مثال:

<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>
پیش فرض: نادرست
حضور: اختیاری
نوع: بولی

عنصر <همگام>

برای به روز رسانی همزمان شمارنده سهمیه توزیع شده روی true تنظیم کنید. این بدان معنی است که به روز رسانی پیشخوان همزمان با بررسی سهمیه در یک درخواست به API انجام می شود. اگر ضروری است اجازه ندهید هیچ تماس API بیش از حد مجاز نباشد، روی true تنظیم کنید.

برای به‌روزرسانی ناهمزمان شمارنده سهمیه، روی false تنظیم کنید. این به این معنی است که بسته به زمانی که شمارنده سهمیه در مخزن مرکزی به‌طور ناهمزمان به‌روزرسانی می‌شود، ممکن است برخی از فراخوان‌های API بیش از سهمیه انجام شوند. با این حال، با تأثیرات بالقوه عملکرد مرتبط با به‌روزرسانی‌های همزمان مواجه نخواهید شد.

فاصله به روز رسانی ناهمزمان پیش فرض 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 ثانیه باشد که در مبحث Limits توضیح داده شده است.

پیش فرض: 10
حضور: اختیاری
نوع:

عدد صحیح

عنصر <AsynchronousConfiguration>/<SyncMessageCount>

تعداد درخواست‌ها را در تمام پردازنده‌های پیام Apigee بین به‌روزرسانی‌های سهمیه مشخص می‌کند.

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

این مثال مشخص می کند که تعداد سهمیه هر 5 درخواست در هر پردازشگر پیام Apigee Edge به روز می شود.

پیش فرض: n/a
حضور: اختیاری
نوع:

عدد صحیح

عنصر <Identifier>

از عنصر <Identifier> برای پیکربندی خط مشی برای ایجاد شمارنده های منحصر به فرد بر اساس یک متغیر جریان استفاده کنید.

می‌توانید شمارنده‌های منحصربه‌فردی برای مشخصه‌های تعریف‌شده توسط یک متغیر جریان ایجاد کنید. به عنوان مثال، ممکن است از آدرس ایمیل توسعه‌دهنده برای تعیین سهمیه به یک توسعه‌دهنده خاص استفاده کنید. می‌توانید از متغیرهای مختلفی برای شناسایی یک سهمیه استفاده کنید، چه از متغیرهای سفارشی یا از متغیرهای از پیش تعریف‌شده استفاده کنید، مانند متغیرهایی که با خط‌مشی Verify API Key موجود است. همچنین به مرجع متغیرها مراجعه کنید.

اگر از این عنصر استفاده نمی کنید، این خط مشی از یک شمارنده واحد استفاده می کند که در برابر سهمیه اعمال می شود.

این عنصر همچنین در پست انجمن 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"/>
پیش فرض: N/A
حضور: اختیاری
نوع:

رشته

صفات

صفت توضیحات پیش فرض حضور
رجوع کنید

یک متغیر جریان را مشخص می کند که شمارنده مورد استفاده برای درخواست را مشخص می کند. شناسه می‌تواند یک هدر HTTP، پارامتر پرس و جو، پارامتر فرم یا محتوای پیام باشد که برای هر برنامه، کاربر برنامه، توسعه‌دهنده برنامه، محصول API یا سایر مشخصه‌ها منحصر به فرد است.

<Identifier> که معمولاً برای شناسایی منحصر به فرد برنامه ها استفاده می شود، client_id است. client_id نام دیگری برای کلید API یا کلید مصرف کننده است که برای یک برنامه زمانی که در یک سازمان در Apigee Edge ثبت می شود، تولید می شود. اگر کلید API یا سیاست های مجوز OAuth را برای API خود فعال کرده باشید، می توانید از این شناسه استفاده کنید.

در برخی شرایط، تنظیمات Quota باید در جایی که client_id در دسترس نیست، بازیابی شود، مانند زمانی که هیچ خط مشی امنیتی وجود ندارد. در این شرایط، می‌توانید از خط‌مشی Access Entity برای بازیابی تنظیمات محصول API مناسب استفاده کنید، سپس مقادیر را با استفاده از ExtractVariables استخراج کنید و سپس از متغیر زمینه استخراج‌شده در خط‌مشی Quota استفاده کنید. برای اطلاعات بیشتر، به خط مشی موجودیت دسترسی مراجعه کنید.

N/A اختیاری

عنصر <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"/>
پیش فرض: N/A
حضور: اختیاری
نوع:

عدد صحیح

متغیرهای جریان

متغیرهای جریان از پیش تعریف شده زیر به طور خودکار در هنگام اجرای یک خط مشی Quota پر می شوند. برای اطلاعات بیشتر در مورد متغیرهای جریان، به مرجع متغیرها مراجعه کنید.

متغیرها تایپ کنید مجوزها توضیحات
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 طولانی فقط خواندنی

زمان UTC را بر حسب میلی ثانیه برمی‌گرداند که تعیین می‌کند چه زمانی سهمیه منقضی شود و بازه سهمیه جدید شروع شود.

هنگامی که نوع خط مشی سهمیه 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}.شکست خورد بولی فقط خواندنی

نشان می دهد که آیا خط مشی شکست خورده است (درست یا نادرست).

مرجع خطا

این بخش کدهای خطا و پیام‌های خطایی را که برگردانده می‌شوند و متغیرهای خطا را که توسط Edge تنظیم می‌شوند، هنگامی که این خط‌مشی خطا را راه‌اندازی می‌کند، توضیح می‌دهد. این اطلاعات برای دانستن اینکه آیا در حال توسعه قوانین خطا برای رسیدگی به خطاها هستید، مهم است. برای کسب اطلاعات بیشتر، آنچه را که باید در مورد خطاهای خط مشی و مدیریت خطاها بدانید را ببینید.

خطاهای زمان اجرا

این خطاها ممکن است هنگام اجرای سیاست رخ دهند.

کد خطا وضعیت HTTP علت رفع کنید
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 اگر عنصر <Interval> در خط مشی Quota تعریف نشده باشد رخ می دهد. این عنصر اجباری است و برای تعیین فاصله زمانی قابل اعمال برای سهمیه استفاده می شود. فاصله زمانی می تواند دقیقه، ساعت، روز، هفته یا ماه باشد که با عنصر <TimeUnit> تعریف شده است.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 اگر عنصر <TimeUnit> در خط مشی Quota تعریف نشده باشد رخ می دهد. این عنصر اجباری است و برای تعیین واحد زمان قابل اعمال در سهمیه استفاده می شود. فاصله زمانی می تواند بر حسب دقیقه، ساعت، روز، هفته یا ماه باشد.
policies.ratelimit.InvalidMessageWeight 500 اگر مقدار عنصر <MessageWeight> مشخص شده از طریق متغیر جریان نامعتبر باشد (مقدار غیر صحیح) رخ می دهد.
policies.ratelimit.QuotaViolation 500 از حد مجاز فراتر رفت. N/A

خطاهای استقرار

نام خطا علت رفع کنید
InvalidQuotaInterval اگر بازه سهمیه مشخص شده در عنصر <Interval> یک عدد صحیح نباشد، در آن صورت استقرار پراکسی API با شکست مواجه می شود. به عنوان مثال، اگر بازه سهمیه مشخص شده 0.1 در عنصر <Interval> باشد، در آن صورت استقرار پروکسی API با شکست مواجه می شود.
InvalidQuotaTimeUnit اگر واحد زمانی مشخص شده در عنصر <TimeUnit> پشتیبانی نشود، استقرار پروکسی API با شکست مواجه می شود. واحدهای زمانی پشتیبانی شده عبارتند از minute ، hour ، day ، week و month .
InvalidQuotaType اگر نوع سهمیه مشخص شده توسط ویژگی type در عنصر <Quota> نامعتبر باشد، در این صورت استقرار پراکسی API ناموفق است. انواع سهمیه پشتیبانی شده default , calendar , flexi و rollingwindow هستند .
InvalidStartTime اگر قالب زمان مشخص شده در عنصر <StartTime> نامعتبر باشد، استقرار پروکسی API با شکست مواجه می شود. قالب معتبر yyyy-MM-dd HH:mm:ss است که فرمت تاریخ و زمان ISO 8601 است. به عنوان مثال، اگر زمان مشخص شده در عنصر <StartTime> 7-16-2017 12:00:00 باشد، استقرار پراکسی API با شکست مواجه می شود.
StartTimeNotSupported اگر عنصر <StartTime> مشخص شده باشد که نوع سهمیه آن از نوع calendar نیست، در این صورت استقرار پراکسی API با شکست مواجه می شود. عنصر <StartTime> فقط برای نوع سهمیه calendar پشتیبانی می شود. به عنوان مثال، اگر ویژگی type در عنصر <Quota> روی پنجره flexi یا rolling window تنظیم شده باشد، استقرار پراکسی API با شکست مواجه می‌شود.
InvalidTimeUnitForDistributedQuota اگر عنصر <Distributed> روی true و عنصر <TimeUnit> روی second تنظیم شود، استقرار پراکسی API با شکست مواجه می شود. واحد زمانی second برای سهمیه توزیع شده نامعتبر است.
InvalidSynchronizeIntervalForAsyncConfiguration اگر مقدار تعیین‌شده برای عنصر <SyncIntervalInSeconds> در عنصر <AsynchronousConfiguration> در یک خط‌مشی Quota کمتر از صفر باشد، در آن صورت استقرار پراکسی API با شکست مواجه می‌شود.
InvalidAsynchronizeConfigurationForSynchronousQuota اگر مقدار عنصر <AsynchronousConfiguration> در یک خط مشی Quota روی true تنظیم شود، که همچنین دارای پیکربندی ناهمزمان است که با استفاده از عنصر <AsynchronousConfiguration> تعریف شده است، در این صورت استقرار پراکسی API با شکست مواجه می شود.

متغیرهای خطا

این متغیرها زمانی تنظیم می شوند که این خط مشی خطایی را ایجاد کند. برای اطلاعات بیشتر، به آنچه باید در مورد خطاهای خط مشی بدانید مراجعه کنید.

متغیرها کجا مثال
fault.name=" fault_name " fault_name نام خطا است، همانطور که در جدول خطاهای Runtime در بالا ذکر شده است. نام خطا آخرین قسمت کد خطا است. 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>

طرحواره ها

موضوعات مرتبط

سیاست ResetQuota

سیاست SpikeArrest

مقایسه سهمیه، دستگیری سنبله، و خط مشی های محدودیت نرخ همزمان