خط‌مشی سهمیه

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

چه

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

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

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

ویدیوها

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

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

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

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

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

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

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

<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)
  • سرایند، پارامتر پُرسمان، پارامتر فرم، و غیره

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

زمان شروع

<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> بازآوری می‌شود. برای این مثال، «سهمیه» از ساعت ۱۰:۳۰ صبح به وقت گرینویچ در ۱۸ فوریه ۲۰۱۷ شروع به شمارش می‌کند و هر ۵ ساعت بازآوری می‌شود. بنابراین، بازآوری بعدی ساعت ۳:۳۰ بعدازظهر به وقت گرینویچ در ۱۸ فوریه ۲۰۱۷ است.

دسترسی به شمارشگر

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

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

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

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

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

برای مثال، می‌توانید از خط‌مشی 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>

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

برای مثال، اگر شمارنده از 2017-07-08 07:00:00 شروع شود، در 2017-07-08 08:00:00 (۱ ساعت پس‌از زمان شروع) به ۰ بازنشانی می‌شود. اگر اولین پیام در ساعت 2017-07-08 07:35:28 دریافت شود و تعداد پیام‌ها قبل‌از ساعت 2017-07-08 08:00:00 به ۱۰٬۰۰۰ برسد، تماس‌های فراتر از این تعداد تا زمانی که تعداد در ابتدای ساعت بازنشانی شود رد می‌شوند.

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

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

همچنین می‌توانید چندین خط‌مشی «سهمیه» را در پراکسی 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>

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

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

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

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

اگر از خط‌مشی VerifyAPIKey برای اعتبارسنجی کلید میانای برنامه‌سازی کاربردی یا از خط‌مشی‌های OAuthV2 با کدهای OAuth استفاده می‌کنید، می‌توانید از اطلاعات موجود در کلید میانای برنامه‌سازی کاربردی یا کد برای تعریف شمارنده‌های مجزا برای خط‌مشی «سهمیه» یکسان استفاده کنید. برای مثال، برچسب زیر <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 داشته باشد. اگر سرایند مقدار نامعتبر داشته باشد، خط‌مشی خطای نقض سهمیه برمی‌گرداند.


درباره خط‌مشی سهمیه

«سهمیه» عبارت است از تخصیص پیام‌های درخواست که یک پراکسی API می‌تواند در یک دوره زمانی، مثل دقیقه، ساعت، روز، هفته، یا ماه، مدیریت کند. این خط‌مشی شمارنده‌هایی را حفظ می‌کند که تعداد درخواست‌های دریافتی توسط پراکسی API را شمارش می‌کنند. این قابلیت به ارائه‌دهندگان API امکان می‌دهد محدودیت‌هایی را بر تعداد تماس‌های API که برنامه‌ها در یک بازه زمانی برقرار می‌کنند اعمال کنند. بااستفاده از خط‌مشی‌های سهمیه می‌توانید، برای مثال، برنامه‌ها را به ۱ درخواست در دقیقه، یا به ۱۰٬۰۰۰ درخواست در ماه محدود کنید.

برای مثال، اگر «سهمیه» به‌عنوان ۱۰٬۰۰۰ پیام در ماه تعریف شده باشد، محدود کردن نرخ پس‌از پیام دهم‌هزارم شروع می‌شود. مهم نیست که آیا ۱۰٬۰۰۰ پیام در روز اول یا روز آخر آن دوره شمارش شده است؛ تا زمانی که شمارنده «سهمیه» به‌طور خودکار در پایان بازه زمانی مشخص‌شده بازنشانی شود، یا تا زمانی که «سهمیه» به‌طور صریح بااستفاده از خط‌مشی «بازنشانی سهمیه» بازنشانی شود، هیچ درخواست اضافی مجاز نیست.

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

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

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

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

واحد زمان بازنشانی پیش‌فرض (یا تهی) تقویم بازنشانی شد بازنشانی انعطاف‌پذیر
دقیقه شروع دقیقه بعدی یک دقیقه پس‌از <StartTime> یک دقیقه پس‌از اولین درخواست
ساعت ابتدای ساعت بعدی یک ساعت پس‌از <StartTime> یک ساعت پس‌از اولین درخواست
روز نیمه‌شب به وقت گرینویچ در روز جاری ‫۲۴ ساعت پس‌از <StartTime> ‫۲۴ ساعت پس‌از اولین درخواست
هفته نیمه‌شب یکشنبه به وقت گرینویچ در پایان هفته یک هفته پس‌از <StartTime> یک هفته پس‌از اولین درخواست
ماه نیمه‌شب به وقت گرینویچ در آخرین روز ماه یک ماه (۲۸ روز) پس‌از <StartTime> یک ماه (۲۸ روز) پس‌از اولین درخواست

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

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

برای مثال، بازه زمانی دو ساعته‌ای تعریف می‌کنید که اجازه می‌دهد ۱۰۰۰ درخواست ارسال شود. درخواست جدیدی در ساعت ۴:۴۵ بعدازظهر دریافت می‌شود.خط‌مشی تعداد سهمیه را برای بازه زمانی دو ساعت گذشته محاسبه می‌کند، یعنی تعداد درخواست‌ها از ساعت ۲:۴۵ بعدازظهر. اگر در آن بازه دو ساعته از حد سهمیه فراتر نرفته باشید، درخواست مجاز است.

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

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

آشنایی با شمارشگرهای سهمیه

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

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

  • جریان A اجرا می‌شود -> MyQuotaPolicy اجرا می‌شود و شمارنده آن = ۱
  • جریان B اجرا می‌شود -> MyQuotaPolicy اجرا می‌شود و شمارنده آن = ۲
  • جریان A اجرا می‌شود -> MyQuotaPolicy اجرا می‌شود و شمارنده آن = ۳
  • جریان C اجرا می‌شود -> MyQuotaPolicy اجرا می‌شود و شمارنده آن = ۴
  • جریان A اجرا می‌شود -> MyQuotaPolicy اجرا می‌شود و شمارنده آن = ۵

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

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

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

یا از عناصر <Class> یا <Identifier> در خط‌مشی «سهمیه» برای تعریف چندین شمارنده یکتا در یک خط‌مشی استفاده کنید. بااستفاده از این عناصر، یک خط‌مشی می‌تواند براساس برنامه درخواست‌کننده، توسعه‌دهنده برنامه درخواست‌کننده، شناسه مشتری یا شناسه مشتری دیگر، و موارد دیگر، شمارنده‌های مختلفی را حفظ کند. برای اطلاعات بیشتر درباره استفاده از عناصر <Class> یا <Identifier>، مثال‌های بالا را ببینید.

نشانه‌گذاری زمان

همه زمان‌های «سهمیه» روی منطقه زمانی ساعت هماهنگ جهانی (UTC) تنظیم شده است.

نوشتار زمان سهمیه از نوشتار تاریخ استاندارد بین‌المللی که در استاندارد بین‌المللی ISO 8601 تعریف شده است پیروی می‌کند.

تاریخ‌ها به‌صورت سال، ماه، و روز در قالب زیر تعریف می‌شوند: YYYY-MM-DD. برای مثال، 2015-02-04 نشان‌دهنده ۴ فوریه ۲۰۱۵ است.

زمان روز به‌صورت ساعت، دقیقه، و ثانیه در قالب زیر تعریف می‌شود: 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 مراجعه کنید.

مرجع عنصر

در زیر، عناصر و مشخصه‌هایی را که می‌توانید در این خط‌مشی پیکربندی کنید مشاهده می‌کنید. توجه داشته باشید که برخی‌از ترکیب‌های عنصر به‌صورت متقابل انحصاری هستند یا الزامی نیستند. نمونه‌های استفاده خاص را ببینید. متغیرهای verifyapikey.VerifyAPIKey.apiproduct.* زیر به‌طور پیش‌فرض زمانی دردسترس هستند که از خط‌مشی «درستی‌سنجی کلید API» به‌نام «درستی‌سنجی کلید API» برای بررسی کلید 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> تعیین می‌کنید؛ برای مثال، ۱ روز. وقتی درخواستی دریافت می‌شود، Edge به زمان دقیق درخواست (مثلاً ۵:۰۱ بعدازظهر) نگاه می‌کند، تعداد درخواست‌هایی را که بین آن زمان و ۵:۰۱ بعدازظهر روز قبل (۱ روز) دریافت شده است می‌شمارد، و تعیین می‌کند که آیا سهمیه در آن بازه زمانی تمام شده است یا نه.
  • ‫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 استفاده می‌شود.

پیش‌فرض: موجود نیست
حضور: اختیاری
نوع: عدد صحیح

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
تعداد

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

برای مثال، مقدار مشخصه count برابر با ۱۰۰، مقدار مشخصه Interval برابر با ۱، و مقدار مشخصه TimeUnit برابر با ماه، سهمیه ۱۰۰ پیام در ماه را مشخص می‌کند.

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

پیش‌فرض: موجود نیست
حضور: اختیاری
نوع: موجود نیست

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع

برای مشخص کردن متغیر جاری‌سازی حاوی کلاس سهمیه برای یک سهمیه استفاده کنید.

هیچ‌کدام الزامی

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

برای مشخص کردن عدد صحیح (برای مثال، ۱، ۲، ۵، ۶۰، و غیره) که با TimeUnit مشخص‌شده (دقیقه، ساعت، روز، هفته، یا ماه) جفت می‌شود تا دوره زمانی‌ای را که Edge در آن استفاده از سهمیه را محاسبه می‌کند تعیین کنید.

برای مثال، Interval 24 با TimeUnit hour به این معنی است که سهمیه درطول ۲۴ ساعت محاسبه خواهد شد.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
پیش‌فرض: هیچ‌کدام
حضور: الزامی
نوع: عدد صحیح

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع

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

هیچ‌کدام اختیاری

عنصر <TimeUnit>

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

برای مثال، Interval 24 با TimeUnit hour یعنی سهمیه درطول ۲۴ ساعت محاسبه خواهد شد.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
پیش‌فرض: هیچ‌کدام
حضور: الزامی
نوع:

رشته. از بین minute، hour، day، week، یا month انتخاب کنید.

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع برای مشخص کردن متغیر جریانی که حاوی واحد زمان برای سهمیه است استفاده کنید. 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> را روی درست تنظیم کنید:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
پیش‌فرض: نادرست
حضور: اختیاری
نوع: بولی

عنصر <Synchronous>

برای به‌روزرسانی هم‌زمان شمارنده سهمیه توزیع‌شده، روی true تنظیم کنید. این یعنی به‌روزرسانی شمارنده هم‌زمان با بررسی سهمیه در درخواست به API انجام می‌شود. اگر ضروری است که هیچ فراخوانی «میانای برنامه‌سازی کاربردی» فراتر از سهمیه مجاز نباشد، آن را روی true تنظیم کنید.

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

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

از این تنظیم برای ملغی کردن رفتار پیش‌فرض استفاده کنید که در آن به‌روزرسانی‌های ناهم‌زمان پس‌از فاصله زمانی ۱۰ ثانیه انجام می‌شود.

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

فاصله همگام‌سازی باید همان‌طور که در موضوع محدودیت‌ها توضیح داده شده است >= 10 ثانیه باشد.

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

عدد صحیح

عنصر <AsynchronousConfiguration>/<SyncMessageCount>

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

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

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

پیش‌فرض: نامربوط
حضور: اختیاری
نوع:

عدد صحیح

عنصر <Identifier>

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

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

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

این عنصر در پست «انجمن Apigee» زیر نیز مورد بحث قرار گرفته است: شناسه سهمیه در خط‌مشی‌های مختلف.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
پیش‌فرض: موجود نیست
حضور: اختیاری
نوع:

رشته

مشخصه‌ها

مشخصه شرح پیش‌فرض حضور
مرجع

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

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

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

موجود نیست اختیاری

عنصر <MessageWeight>

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

برای مثال، می‌خواهید پیام‌های POST را دو برابر پیام‌های GET سنگین یا پرهزینه درنظر بگیرید. بنابراین، MessageWeight را برای POST روی ۲ و برای GET روی ۱ تنظیم می‌کنید. حتی می‌توانید MessageWeight را روی ۰ تنظیم کنید تا درخواست روی شمارنده تأثیر نگذارد. در این مثال، اگر سهمیه ۱۰ پیام در دقیقه باشد و MessageWeight برای درخواست‌های POST 2 باشد، سهمیه اجازه می‌دهد در هر بازه ۱۰ دقیقه‌ای ۵ درخواست POST ارسال شود. هرگونه درخواست اضافی، 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 طولانی فقط خواندنی پس‌از فراتر رفتن از سهمیه، مقدار ۱ را برمی‌گرداند.
ratelimit.{policy_name}.total.exceed.count طولانی فقط خواندنی پس‌از فراتر رفتن از سهمیه، مقدار ۱ را برمی‌گرداند.
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}.failed بولی فقط خواندنی

نشان می‌دهد که خط‌مشی ناموفق بوده است یا نه (درست یا نادرست).

مرجع خطا

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

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

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

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

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

نام خطا علت رفع اشکال
InvalidQuotaInterval اگر بازه سهمیه مشخص‌شده در عنصر <Interval> عدد صحیح نباشد، پیاده‌سازی پراکسی API ناموفق خواهد بود. برای مثال، اگر فاصله سهمیه مشخص‌شده در عنصر <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> در خط‌مشی «سهمیه» کمتر از صفر باشد، استقرار پراکسی API ناموفق خواهد بود.
InvalidAsynchronizeConfigurationForSynchronousQuota اگر مقدار عنصر <AsynchronousConfiguration> در خط‌مشی «سهمیه» روی true تنظیم شده باشد، که همچنین پیکربندی ناهم‌زمان بااستفاده از عنصر <AsynchronousConfiguration> تعریف شده باشد، آنگاه استقرار پراکسی API ناموفق خواهد بود.

متغیرهای خطا

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

متغیر مکان مثال
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>

طرح‌واره‌ها

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

خط‌مشی ResetQuota

خط‌مشی SpikeArrest

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