מדיניות בנושא מכסות

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מה

אפשר להשתמש במדיניות Quota כדי להגדיר את מספר הודעות הבקשה ש-proxy ל-API מאפשר במהלך תקופת זמן מסוימת, כמו דקה, שעה, יום, שבוע או חודש. אפשר להגדיר את המכסה כך שתהיה זהה לכל האפליקציות שיש להן גישה ל-proxy ל-API, או להגדיר את המכסה על סמך:

  • המוצר שמכיל את ה-proxy ל-API
  • האפליקציה ששולחת את הבקשה ל-API
  • מפַתח האפליקציה
  • קריטריונים רבים אחרים

אל תשתמשו במכסת נפח כדי להתגונן מפני עליות חדות בנפח התנועה הכולל. לשם כך, משתמשים במדיניות Spike Arrest. מדיניות Spike Arrest

סרטונים

בסרטונים האלה מוצג ניהול מכסות באמצעות מדיניות המכסות:

פתיח (New Edge)

פתיח (גרסה קלאסית של 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 לא מחייבת את השימוש בהם ב-proxy ל-API. צריך גם להוסיף מדיניות מכסה ל-proxy ל-API שקורא את הערכים האלה. מידע נוסף זמין במאמר בנושא יצירת מוצרי API.

בדוגמה שלמעלה, פרוקסי ה-API שמכיל את מדיניות המכסות משתמש במדיניות VerifyAPIKey בשם verify-api-key כדי לאמת את מפתח ה-API שמועבר בבקשה. ‫ Quota policy then accesses the flow variables from the VerifyAPIKey policy to read the quota values set on the API product. מידע נוסף על משתני הזרימה של VerifyAPIKey זמין במאמר מדיניות Verify API Key.

אפשרות נוספת היא להגדיר מאפיינים מותאמים אישית למפתחים או לאפליקציות ספציפיים, ואז לקרוא את הערכים האלה במדיניות בנושא מכסות. לדוגמה, אתם רוצים להגדיר ערכי מכסה שונים לכל מפתח. במקרה כזה, מגדירים מאפיינים מותאמים אישית אצל המפתח שמכילים את המגבלה, יחידת הזמן והמרווח. אחר כך מפנים לערכים האלה במדיניות בנושא מכסות, כמו שמוצג בהמשך:

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

בדוגמה הזו נעשה שימוש גם במשתני הזרימה VerifyAPIKey כדי להפנות למאפיינים המותאמים אישית שהוגדרו למפתח.

אפשר להשתמש בכל משתנה כדי להגדיר את הפרמטרים של מדיניות המכסות. המשתנים האלה יכולים להגיע מהמקורות הבאים:

  • משתני זרימה
  • מאפיינים במוצר ה-API, באפליקציה או במפתח
  • מפת צמדי מפתח/ערך (KVM)
  • כותרת, פרמטר של שאילתה, פרמטר של טופס וכו'

לכל proxy ל-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> מפורש. ערך הזמן הוא לפי שעון GMT, ולא לפי הזמן המקומי. אם לא תספקו ערך <StartTime> למדיניות מסוג calendar, תופיע שגיאה ב-Edge.

מונה המכסה של כל אפליקציה מתעדכן על סמך הערכים <StartTime>,‏ <Interval> ו<TimeUnit>. בדוגמה הזו, המכסה מתחילה להיספר ב-18 בפברואר 2017 בשעה 10:30 (GMT), ומתעדכנת כל 5 שעות. לכן, החידוש הבא יהיה ב-18 בפברואר 2017 בשעה 15:30 GMT.

מונה גישה

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

ל-proxy ל-API יש גישה למשתני הזרימה שהוגדרו על ידי מדיניות המכסה. אפשר לגשת למשתני הזרימה האלה ב-proxy ל-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>

אפשר להשתמש בקוד לדוגמה הזה כדי לאכוף מכסה של 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> של שעה, המונה מתאפס כל 12 שעות. אפשר להגדיר את <TimeUnit> לדקה, לשעה, ליום, לשבוע או לחודש.

אפשר להפנות למדיניות הזו בכמה מקומות ב-proxy ל-API. לדוגמה, אפשר למקם אותו ב-Proxy PreFlow כדי שהוא יופעל בכל בקשה. לחלופין, אפשר למקם אותו בכמה רכיבי Flow ב-proxy ל-API. אם משתמשים במדיניות הזו בכמה מקומות בשרת הפרוקסי, היא שומרת על מונה יחיד שמתעדכן על ידי כל המופעים של המדיניות.

אפשרות אחרת היא להגדיר כמה כללי מדיניות של מכסת שימוש ב-proxy ל-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>

כברירת מחדל, מדיניות מכסה מגדירה מונה יחיד ל-proxy ל-API, ללא קשר למקור הבקשה. אפשר גם להשתמש במאפיין <Identifier> עם מדיניות מכסה כדי לשמור על מוני נפרדים על סמך הערך של המאפיין <Identifier>.

לדוגמה, אפשר להשתמש בתג <Identifier> כדי להגדיר מונה נפרד לכל מזהה לקוח. בבקשה לשרת ה-proxy, אפליקציית הלקוח מעבירה כותרת שמכילה את clientID, כמו בדוגמה שלמעלה.

אפשר לציין כל משתנה זרימה במאפיין <Identifier>. לדוגמה, אפשר לציין שפרמטר שאילתה בשם id מכיל את המזהה הייחודי:

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

אם אתם משתמשים במדיניות VerifyAPIKey כדי לאמת את מפתח ה-API, או במדיניות OAuthV2 עם אסימוני OAuth, אתם יכולים להשתמש במידע במפתח ה-API או באסימון כדי להגדיר מונים נפרדים לאותה מדיניות Quota. לדוגמה, בתג <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. אם הערך של הכותרת לא תקין, המדיניות מחזירה שגיאה של חריגה מהמכסה.


מידע על מדיניות המכסות

מכסה היא הקצאה של הודעות בקשה ש-proxy ל-API יכול לטפל בהן במהלך תקופת זמן מסוימת, כמו דקה, שעה, יום, שבוע או חודש. המדיניות שומרת על מונים שסופרים את מספר הבקשות שהתקבלו על ידי proxy ל-API. היכולת הזו מאפשרת לספקי API לאכוף מגבלות על מספר הקריאות ל-API שאפליקציות מבצעות במהלך פרק זמן מסוים. באמצעות מדיניות מכסות, אפשר למשל להגביל את האפליקציות לבקשה אחת בדקה או ל-10,000 בקשות בחודש.

לדוגמה, אם מכסת ההודעות היא 10,000 הודעות בחודש, הגבלת הקצב מתחילה אחרי ההודעה ה-10,000. לא משנה אם 10,000 הודעות נספרו ביום הראשון או ביום האחרון של התקופה הזו. לא ניתן לשלוח בקשות נוספות עד שהמונה של המכסה יתאפס אוטומטית בסוף מרווח הזמן שצוין, או עד שהמכסה תתאפס באופן מפורש באמצעות מדיניות איפוס המכסה.

וריאציה של מכסת השימוש שנקראת SpikeArrest מונעת עליות חדות בתנועה (או פרצי תנועה) שיכולות להיגרם על ידי עלייה פתאומית בשימוש, לקוחות עם באגים או מתקפות זדוניות. מידע נוסף על SpikeArrest זמין במאמר מדיניות Spike Arrest.

המכסות חלות על שרתי proxy ספציפיים ל-API, ולא מתחלקות בין שרתי proxy ל-API. לדוגמה, אם יש לכם שלושה שרתי proxy ל-API במוצר API, לא תהיה מכסה אחת משותפת לכל השלושה, גם אם כולם משתמשים באותה הגדרת מדיניות מכסות.

סוגים של כללי מדיניות בנושא מכסות

מדיניות המכסות תומכת בכמה סוגים שונים של מדיניות: ברירת מחדל, calendar,‏ flexi ו-rollingwindow. כל סוג מגדיר מתי מתחיל מונה המכסה ומתי הוא מתאפס, כמו שמוצג בטבלה הבאה:

יחידת זמן איפוס לברירת מחדל (או לערך null) איפוס היומן איפוס גמיש
דקה תחילת הדקה הבאה דקה אחרי <StartTime> דקה אחת אחרי הבקשה הראשונה
hour בתחילת השעה הבאה שעה אחרי <StartTime> שעה אחרי הבקשה הראשונה
יום חצות לפי שעון גריניץ' (GMT) של היום הנוכחי 24 שעות אחרי <StartTime> ‫24 שעות אחרי הבקשה הראשונה
שבוע חצות שעון גריניץ' ביום ראשון בסוף השבוע שבוע אחרי <StartTime> שבוע אחרי הבקשה הראשונה
חודש חצות לפי שעון GMT ביום האחרון של החודש חודש אחד (28 ימים) אחרי <StartTime> חודש (28 ימים) אחרי הבקשה הראשונה

עבור type="calendar", צריך לציין את הערך של <StartTime>.

הטבלה לא מציגה את הערך של הסוג rollingwindow. מכסות של חלון נע מוגדרות על ידי הגדרת הגודל של 'חלון' מכסה, כמו חלון של שעה או של יום. כשמתקבלת בקשה חדשה, המדיניות קובעת אם חרגתם מהמכסה בפרק הזמן האחרון.

לדוגמה, אתם מגדירים חלון של שעתיים שמאפשר 1,000 בקשות. בקשה חדשה מתקבלת בשעה 16:45.המדיניות מחשבת את מספר הבקשות בחלון של שעתיים אחורה, כלומר מספר הבקשות מאז השעה 14:45. אם לא חרגתם ממגבלת המכסה בחלון הזמן של שעתיים, הבקשה תאושר.

דקה לאחר מכן, בשעה 16:46, מתקבלת בקשה נוספת. עכשיו המדיניות מחשבת את מספר המכסות מאז 14:46 כדי לקבוע אם חרגתם מהמגבלה.

בסוג rollingwindow, הדלפק אף פעם לא מתאפס, אבל הוא מחושב מחדש בכל בקשה.

הסבר על מוניטורים של מכסות

כברירת מחדל, מדיניות מכסות מתחזקת מונה יחיד, בלי קשר למספר הפעמים שמתייחסים אליה ב-proxy ל-API. השם של מונה המכסות מבוסס על המאפיין name של המדיניות.

לדוגמה, יוצרים מדיניות מכסה בשם MyQuotaPolicy עם מגבלה של 5 בקשות, ומציבים אותה בכמה תהליכים (תהליך א', תהליך ב' ותהליך ג') ב-proxy ל-API. למרות שהיא משמשת במספר תהליכים, היא שומרת על מונה יחיד שמתעדכן על ידי כל המופעים של המדיניות:

  • תהליך A מופעל -> מדיניות הקצאה MyQuotaPolicy מופעלת והמונה שלה = 1
  • תהליך B מופעל -> מדיניות MyQuota מופעלת והמונה שלה = 2
  • תהליך A מבוצע -> מדיניות MyQuota מבוצעת והמונה שלה = 3
  • תהליך C מבוצע -> מדיניות המכסה שלי מבוצעת והמונה שלה = 4
  • תהליך A מבוצע -> מדיניות המכסה שלי מבוצעת והמונה שלה = 5

הבקשה הבאה לאחד משלושת התהליכים נדחית כי מונה המכסה הגיע למגבלה שלו.

שימוש באותה מדיניות מכסה ביותר ממקום אחד בתהליך של proxy ל-API, שעלול לגרום למכסה להיגמר מהר יותר מהצפוי, הוא דפוס אנטי שמתואר בThe Book of Apigee Edge Antipatterns.

אפשרות אחרת היא להגדיר כמה מדיניות מכסה ב-proxy ל-API ולהשתמש במדיניות שונה בכל זרימה. לכל מדיניות מכסה יש מונה משלה, שמבוסס על מאפיין name של המדיניות.

לחלופין, אפשר להשתמש ברכיבים <Class> או <Identifier> במדיניות הקצאה כדי להגדיר כמה מונים ייחודיים במדיניות אחת. באמצעות הרכיבים האלה, אפשר להגדיר מדיניות אחת שתחזיק מוני נפרדים על סמך האפליקציה ששולחת את הבקשה, מפתח האפליקציה ששולח את הבקשה, מזהה לקוח או מזהה לקוח אחר ועוד. למידע נוסף על השימוש ברכיבים <Class> או <Identifier>, אפשר לעיין בדוגמאות שלמעלה.

סימון זמן

כל השעות שמוגדרות במכסת השימוש הן לפי אזור הזמן זמן אוניברסלי מתואם (UTC).

הפורמט של מכסת הזמן הוא פורמט התאריך הבינלאומי שמוגדר בתקן הבינלאומי ISO 8601.

התאריכים מוגדרים כשנה, חודש ויום, בפורמט הבא: YYYY-MM-DD. לדוגמה, 2015-02-04 מייצג את 4 בפברואר 2015.

השעה ביום מוגדרת כשעות, דקות ושניות בפורמט הבא: hours:minutes:seconds. לדוגמה, 23:59:59 מייצג את השעה שנייה אחת לפני חצות.

שימו לב שיש שני סימונים, 00:00:00 ו-24:00:00, כדי להבחין בין שתי חצות שיכולות להיות משויכות לתאריך אחד. לכן, 2015-02-04 24:00:00 הוא אותו תאריך ושעה כמו 2015-02-05 00:00:00. בדרך כלל עדיף להשתמש בסימון השני.

קבלת הגדרות מכסה מהגדרות מוצר ה-API

אפשר להגדיר מגבלות על מכסת השימוש בהגדרות של מוצרי API. המגבלות האלה לא אוכפות את המכסה באופן אוטומטי. במקום זאת, אפשר להפנות להגדרות של מכסת מוצרים במדיניות מכסות. אלה כמה יתרונות של הגדרת מכסה במוצר לצורך הפניה למדיניות בנושא מכסות:

  • במדיניות בנושא מכסות אפשר להשתמש בהגדרה אחידה בכל שרתי ה-proxy של ה-API במוצר ה-API.
  • אפשר לבצע שינויים בהגדרת המכסה של מוצר API בזמן ריצה, ומדיניות המכסות שמפנה לערך הזה תתעדכן אוטומטית.

מידע נוסף על שימוש בהגדרות מכסה ממוצר API מופיע בדוגמה 'מכסה דינמית' שבהמשך המאמר.

מידע על הגדרת מוצרי API עם מכסות זמין במאמר יצירת מוצרי API.

הפניה לרכיב

בהמשך מפורטים רכיבים ומאפיינים שאפשר להגדיר במדיניות הזו. חשוב לדעת שחלק מהשילובים של רכיבים הם בלעדיים או לא נדרשים. דוגמאות לשימוש ספציפי המשתנים verifyapikey.VerifyAPIKey.apiproduct.* שבהמשך זמינים כברירת מחדל כשמשתמשים במדיניות Verify API Key (אימות מפתח API) שנקראת 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>. לדוגמה, יום אחד. כשמתקבלת בקשה, Edge בודק את השעה המדויקת של הבקשה (לדוגמה, 17:01), סופר את מספר הבקשות שהתקבלו בין השעה הזו לבין 17:01 ביום הקודם (יום אחד), וקובע אם חרגתם מהמכסה במהלך חלון הזמן הזה.
  • flexi: הגדרת מכסת שימוש שתגרום למונה להתחיל לפעול כשמתקבלת הודעת הבקשה הראשונה מאפליקציה, והאיפוס יתבצע על סמך הערכים <Interval>, ו-<TimeUnit>.
יומן, קלנדר, קאלנדר אופציונלי

בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין תיאור ברירת מחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול לכלול אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול ארוך מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי להוסיף תווית למדיניות עורך ה-Proxy של ממשק המשתמש לניהול בעל שם אחר בשפה טבעית.

לא רלוונטי חובה
continueOnError

צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי של רוב כללי המדיניות.

יש להגדיר ל-true כדי שביצוע התהליך יימשך גם לאחר המדיניות נכשל.

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תהיה אכיפה גם אם היא ממשיכה להיות מחוברת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

&lt;DisplayName&gt; רכיב

צריך להשתמש בנוסף למאפיין name כדי להוסיף תווית למדיניות עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, הערך של המאפיין name של המדיניות הוא בשימוש.

נוכחות אופציונלי
סוג מחרוזת

אלמנט <Allow>

מציין את מגבלת הספירה של המכסה. אם מונה המדיניות מגיע לערך המגבלה הזה, בקשות נוספות נדחות עד שהמונה מתאפס.

בהמשך מוצגות שלוש דרכים להגדיר את הרכיב <Allow>:

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

אם מציינים גם count וגם countRef, אז countRef מקבל עדיפות. אם countRef לא נפתר בזמן הריצה, המערכת תשתמש בערך של count.

ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: מספר שלם

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות
ספירה

משמש לציון מספר ההודעות במכסת נפח האחסון.

לדוגמה, אם ערך המאפיין count הוא 100, ערך המאפיין Interval הוא 1 וערך המאפיין TimeUnit הוא month, המשמעות היא מכסת 100 הודעות בחודש.

2000 אופציונלי
countRef

משמש לציון משתנה של זרימת עבודה שמכיל את מספר ההודעות של מכסת השימוש. המאפיין countRef מקבל עדיפות על פני המאפיין count.

אין אופציונלי

אלמנט <Allow>/<Class>

רכיב <Class> מאפשר להגדיר תנאי לערך של רכיב <Allow> על סמך הערך של משתנה זרימה. לכל תג צאצא <Allow>שונה של <Class>, המדיניות שומרת על מונה שונה.

כדי להשתמש ברכיב <Class>, מציינים משתנה של זרימת נתונים באמצעות המאפיין ref בתג <Class>. לאחר מכן, Edge משתמש בערך של משתנה הזרימה כדי לבחור אחד מתגי הצאצא <Allow> כדי לקבוע את המספר המותר של המדיניות. ‫Edge מתאים את הערך של משתנה הזרימה למאפיין class של התג <Allow>, כמו שמוצג בהמשך:

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

בדוגמה הזו, מונה המכסות הנוכחי נקבע לפי הערך של פרמטר השאילתה time_variable שמועבר עם כל בקשה. הערך של המשתנה הזה יכול להיות peak_time או off_peak_time. אם פרמטר השאילתה מכיל ערך לא תקין, המדיניות מחזירה שגיאה של חריגה מהמכסה.

ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות
ref

משתמשים במשתנה הזה כדי לציין משתנה של זרימה שמכיל את סוג המכסה של מכסה מסוימת.

אין חובה

‫<Allow>/<Class>/<Allow> element

הרכיב <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 שתציינו (minute,‏ hour,‏ day,‏ week או month) כדי לקבוע את תקופת הזמן שבמהלכה Edge יחשב את השימוש במכסה.

לדוגמה, אם Interval הוא 24 ו-TimeUnit הוא hour, המכסה תחושב במהלך 24 שעות.

<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
ברירת מחדל: אין
נוכחות: חובה
סוג: מספר שלם

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות
ref

משתמשים בו כדי לציין משתנה של זרימת עבודה שמכיל את המרווח של מכסת שימוש. הערך ref מקבל עדיפות על פני ערך מפורש של מרווח זמן. אם מציינים גם הפניה וגם ערך, ההפניה מקבלת עדיפות. אם הערך ref לא נפתר בזמן הריצה, המערכת משתמשת בערך.

אין אופציונלי

אלמנט <TimeUnit>

התג הזה משמש לציון יחידת הזמן שרלוונטית למכסת השימוש.

לדוגמה, אם Interval הוא 24 ו-TimeUnit הוא hour, המכסה תחושב במהלך 24 שעות.

<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
ברירת מחדל: אין
נוכחות: חובה
סוג:

מחרוזת. בוחרים מתוך האפשרויות minute, hour, day, week או month.

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות
ref משתמשים במשתנה הזה כדי לציין משתנה של זרימה שמכיל את יחידת הזמן של מכסת השימוש. ref מקבל עדיפות על פני ערך מפורש של פרק זמן. אם ref לא נפתר בזמן הריצה, המערכת משתמשת בערך. אין אופציונלי

אלמנט <StartTime>

כשמגדירים את type לערך calendar,, מציינים את התאריך והשעה שבהם יתחיל מונה המכסה לספור, בלי קשר לשאלה אם התקבלו בקשות מאפליקציות כלשהן.

לדוגמה:

<StartTime>2017-7-16 12:00:00</StartTime>
ברירת מחדל: אין
נוכחות: חובה אם הערך של type הוא calendar.
סוג:

מחרוזת בפורמט התאריך והשעה של ISO 8601.

רכיב <Distributed>

התקנה של Edge יכולה להשתמש במעבד הודעות אחד או יותר כדי לעבד בקשות. מגדירים את הרכיב הזה לערך true כדי לציין שהמדיניות צריכה לשמור על מונה מרכזי ולסנכרן אותו באופן רציף בכל מעבדי ההודעות. מעבדי ההודעות יכולים להיות באזורי זמינות ו/או באזורים שונים.

אם משתמשים בערך ברירת המחדל false, יכול להיות שתחרגו מהמכסה כי המונה של כל מעבד הודעות לא משותף:

<Distributed>true</Distributed>

כדי להבטיח שהמונים מסונכרנים ומעודכנים בכל בקשה, צריך להגדיר את <Distributed> ואת <Synchronous> כ-true:

<Distributed>true</Distributed>
<Synchronous>true</Synchronous>
ברירת מחדל: false
נוכחות: אופציונלי
סוג: בוליאני

אלמנט <Synchronous>

הערך true מאפשר לעדכן באופן סינכרוני את מונה המכסה המבוזר. כלומר, העדכון של המונה מתבצע באותו זמן שבו המכסה נבדקת בבקשה שנשלחת אל ה-API. מגדירים את הערך true אם חשוב לכם שלא לאפשר קריאות ל-API מעבר למכסה.

מגדירים את הערך false כדי לעדכן את מונה המכסות באופן אסינכרוני. המשמעות היא שאולי חלק מהקריאות ל-API שחורגות מהמכסה יתבצעו, בהתאם למועד שבו מונה המכסה במאגר המרכזי מתעדכן באופן אסינכרוני. עם זאת, לא תיתקלו בהשפעות פוטנציאליות על הביצועים שקשורות לעדכונים סינכרוניים.

ברירת המחדל של מרווח העדכון האסינכרוני היא 10 שניות. כדי להגדיר את ההתנהגות האסינכרונית הזו, משתמשים ברכיב AsynchronousConfiguration.

<Synchronous>false</Synchronous>
ברירת מחדל: false
נוכחות: אופציונלי
סוג: בוליאני

אלמנט <AsynchronousConfiguration>

המדיניות הזו מגדירה את מרווח הזמן בין הסנכרונים של מוני מכסות מבוזרים, כשרכיב ההגדרה של המדיניות <Synchronous> לא קיים או קיים ומוגדר לערך false.

אפשר לסנכרן אחרי תקופה מסוימת או אחרי מספר מסוים של הודעות, באמצעות רכיבי הצאצא SyncIntervalInSeconds או SyncMessageCount. הן בלעדיות הדדית. לדוגמה,

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

או

<AsynchronousConfiguration>
   <SyncMessageCount>5</SyncMessageCount>
</AsynchronousConfiguration>
ברירת מחדל: ‫SyncIntervalInSeconds = 10 seconds
נוכחות: אופציונלי; המערכת מתעלמת מהערך אם <Synchronous> מוגדר ל-true.
סוג:

מתחם

אלמנט <AsynchronousConfiguration>/<SyncIntervalInSeconds>

אפשר להשתמש בהגדרה הזו כדי לשנות את התנהגות ברירת המחדל, שבה מתבצעים עדכונים אסינכרוניים אחרי מרווח של 10 שניות.

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

מרווח הסנכרון צריך להיות גדול מ-10 שניות או שווה לו, כפי שמתואר בנושא מגבלות.

ברירת מחדל: 10
נוכחות: אופציונלי
סוג:

מספר שלם

אלמנט <AsynchronousConfiguration>/<SyncMessageCount>

ההגדרה הזו מציינת את מספר הבקשות בכל מעבדי ההודעות של Apigee בין עדכוני המכסה.

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

בדוגמה הזו מצוין שספירת המכסה מתעדכנת כל 5 בקשות בכל מעבד הודעות של Apigee Edge.

ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג:

מספר שלם

אלמנט <Identifier>

משתמשים ברכיב <Identifier> כדי להגדיר את המדיניות ליצירת מוני נתונים ייחודיים על סמך משתנה של זרימת נתונים.

אפשר ליצור מונייטורים ייחודיים למאפיינים שמוגדרים על ידי משתנה של זרימה. לדוגמה, אפשר להשתמש בכתובת האימייל של המפתח כדי לקשור מכסה למפתח ספציפי. אתם יכולים להשתמש במגוון משתנים כדי לזהות מכסת שימוש, בין אם אתם משתמשים במשתנים מותאמים אישית או במשתנים מוגדרים מראש, כמו אלה שזמינים עם מדיניות אימות מפתח API. אפשר גם לעיין בהפניה למשתנים.

אם לא משתמשים ברכיב הזה, המדיניות משתמשת בדלפק יחיד שמוחל על המכסה.

האלמנט הזה מתואר גם בפוסט הבא בקהילת Apigee: Quota identifier across different policies.

<Identifier ref="verifyapikey.verify-api-key.client_id"/>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג:

מחרוזת

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות
ref

מציינים משתנה של זרימת נתונים שמזהה את המונה שבו רוצים להשתמש לבקשה. המזהה יכול להיות כותרת HTTP, פרמטר של שאילתה, פרמטר של טופס או תוכן של הודעה, שהוא ייחודי לכל אפליקציה, משתמש באפליקציה, מפתח אפליקציה, מוצר API או מאפיין אחר.

<Identifier> הכי נפוץ לזיהוי ייחודי של אפליקציות הוא client_id. ‫client_id הוא שם נוסף למפתח ה-API, או למפתח הצרכן, שנוצר עבור אפליקציה כשהיא נרשמת בארגון ב-Apigee Edge. אפשר להשתמש במזהה הזה אם הפעלתם מדיניות הרשאות של מפתח API או OAuth עבור ה-API שלכם.

בנסיבות מסוימות, צריך לאחזר את הגדרות המכסה כשאין client_id זמין, למשל כשאין מדיניות אבטחה. במקרים כאלה, אפשר להשתמש במדיניות Access Entity כדי לאחזר את ההגדרות המתאימות של מוצר ה-API, ואז לחלץ ערכים באמצעות ExtractVariables, ואז להשתמש במשתנה ההקשר שחולץ במדיניות Quota. מידע נוסף זמין במאמר בנושא מדיניות של ישויות גישה.

לא רלוונטי אופציונלי

אלמנט <MessageWeight>

המאפיין הזה משמש לציון המשקל שמוקצה לכל הודעה. אפשר להשתמש במשקל ההודעה כדי להגדיל את ההשפעה של הודעות בקשה שצורכות יותר משאבי מחשוב מאחרות, למשל.

לדוגמה, אם רוצים לספור הודעות POST כהודעות 'כבדות' או יקרות פי שניים מהודעות GET. לכן, מגדירים את MessageWeight לערך 2 עבור POST ולערך 1 עבור GET. אפשר אפילו להגדיר את MessageWeight ל-0 כדי שהבקשה לא תשפיע על המונה. בדוגמה הזו, אם המכסה היא 10 הודעות בדקה והערך של MessageWeight לבקשות POST הוא 2, המכסה מאפשרת 5 בקשות POST בכל מרווח של 10 דקות. כל בקשה נוספת, POST או GET, לפני איפוס המונה נדחית.

צריך לציין ערך שמייצג את MessageWeight באמצעות משתנה של זרימת נתונים. אפשר לחלץ את הערך מכותרות HTTP, מפרמטרים של שאילתה, ממטען ייעודי (payload) של בקשת XML או JSON או מכל משתנה אחר של זרימת נתונים. לדוגמה, הגדרתם אותו בכותרת בשם weight:

<MessageWeight ref="message_weight"/>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג:

מספר שלם

משתני זרימה

משתני ה-Flow המוגדרים מראש הבאים מאוכלסים באופן אוטומטי כשמדיניות מכסת השימוש מופעלת. מידע נוסף על משתני Flow זמין במאמר חומר עזר בנושא משתנים.

משתנים סוג הרשאות תיאור
ratelimit.{policy_name}.allowed.count ארוך הרשאת קריאה בלבד מחזירה את מספר המכסות המותרות
ratelimit.{policy_name}.used.count ארוך הרשאת קריאה בלבד הפונקציה מחזירה את המכסה הנוכחית בשימוש בתוך מרווח מכסה
ratelimit.{policy_name}.available.count ארוך הרשאת קריאה בלבד מחזירה את מספר המכסות הזמינות במרווח המכסות
ratelimit.{policy_name}.exceed.count ארוך הרשאת קריאה בלבד מחזירה 1 אחרי שחרגתם מהמיכסה.
ratelimit.{policy_name}.total.exceed.count ארוך הרשאת קריאה בלבד מחזירה 1 אחרי שחרגתם מהמיכסה.
ratelimit.{policy_name}.expiry.time ארוך הרשאת קריאה בלבד

הפונקציה מחזירה את השעה ב-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 בוליאני הרשאת קריאה בלבד

מציין אם המדיניות נכשלה (true או false).

הפניה לשגיאה

בקטע הזה מתוארים קודי השגיאה והודעות השגיאה שהוחזרו, ומשתני התקלה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת את המידע הזה אם אתם מפתחים כללי כשל כדי לטפל בתקלות. מידע נוסף זמין במאמר מה צריך לדעת? מידע על שגיאות שקשורות למדיניות וטיפול פגמים.

שגיאות זמן ריצה

השגיאות האלה עשויות להתרחש כשהמדיניות מופעלת.

קוד תקלה סטטוס HTTP סיבה תיקון
policies.ratelimit.FailedToResolveQuotaIntervalReference 500 קורה אם הרכיב <Interval> לא מוגדר במדיניות Quota. הרכיב הזה חובה ומשמש לציון מרווח הזמן שרלוונטי למכסה. מרווח הזמן הערך יכול להיות דקות, שעות, ימים, שבועות או חודשים, כפי שמוגדר באמצעות הרכיב <TimeUnit>.
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference 500 קורה אם הרכיב <TimeUnit> לא מוגדר במדיניות Quota. הרכיב הזה חובה ומשמש לציון יחידת הזמן הרלוונטית למכסה. מרווח הזמן יכול להיות בדקות, שעות, ימים, שבועות או חודשים.
policies.ratelimit.InvalidMessageWeight 500 מתרחש אם הערך של הרכיב <MessageWeight> צוין באמצעות משתנה זרימה לא חוקי (ערך שאינו מספר שלם).
policies.ratelimit.QuotaViolation 500 חרגת מהמיכסה. לא רלוונטי

שגיאות פריסה

שם השגיאה סיבה תיקון
InvalidQuotaInterval אם מרווח המכסה שצוין ברכיב <Interval> הוא לא מספר שלם, הפריסה של שרת ה-proxy ל-API נכשלת. לדוגמה, אם מרווח הזמן במכסה שצוין הוא 0.1 ברכיב <Interval>, אז הפריסה של ה-Proxy ל-API נכשל.
InvalidQuotaTimeUnit אם יחידת הזמן שצוינה ברכיב <TimeUnit> אינה נתמכת, הפריסה של שרת ה-proxy ל-API נכשלת. יחידות הזמן הנתמכות הן minute, hour, day, week וגם month.
InvalidQuotaType אם סוג המכסה שצוין על ידי המאפיין type ב<Quota> לא חוקי, אז הפריסה של שרת ה-proxy ל-API נכשלת. המכסות הנתמכות הן default, calendar, flexi ו-rollingwindow.
InvalidStartTime אם פורמט השעה שצוין ברכיב <StartTime> הוא לא, הפריסה של שרת ה-proxy ל-API נכשלת. הפורמט החוקי הוא yyyy-MM-dd HH:mm:ss, שהוא פורמט תאריך ושעה ב-ISO 8601. עבור לדוגמה, אם השעה שצוינה ברכיב <StartTime> היא 7-16-2017 12:00:00, הפריסה של שרת ה-proxy ל-API נכשלת.
StartTimeNotSupported אם צוין הרכיב <StartTime> שסוג המכסה שלו לא צוין סוג calendar, הפריסה של שרת ה-proxy ל-API נכשלת. הרכיב <StartTime> הוא רק למכסה מסוג calendar. לדוגמה, אם המאפיין type מוגדר אל flexi או rolling window ברכיב <Quota>, ואז אל הפריסה של שרת ה-proxy ל-API נכשלה.
InvalidTimeUnitForDistributedQuota אם הרכיב <Distributed> מוגדר לערך true והרכיב <TimeUnit> מוגדר לערך second – הפריסה של שרת ה-proxy ל-API נכשלת. יחידת הזמן second אינה חוקית עבור מכסה מבוזרת.
InvalidSynchronizeIntervalForAsyncConfiguration אם הערך שצוין לרכיב <SyncIntervalInSeconds> בתוך הרכיב <AsynchronousConfiguration> במדיניות מכסה קטן מאפס, ואז הפריסה של שרת ה-proxy ל-API נכשלה.
InvalidAsynchronizeConfigurationForSynchronousQuota אם הערך של הרכיב <AsynchronousConfiguration> מוגדר כ-true במדיניות מכסה, שגם בהגדרה אסינכרונית באמצעות הרכיב <AsynchronousConfiguration>, לאחר מכן הפריסה של שרת ה-proxy ל-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

השוואה בין מכסה, מדיניות למניעת עליות פתאומיות ומדיניות של הגבלת קצב מקבילי