הגדרת מכסות

בדף הזה מוסבר איך להגדיר מכסות ל-API. ככלל, השלבים הם:

  1. מוסיפים את המידע על המכסה לקובץ ההגדרות של gRPC API.
  2. פורסים את קובץ התצורה של gRPC API.
  3. פורסים את Extensible Service Proxy ‏ (ESP).

מידע על מכסות

דרישות מוקדמות

כנקודת התחלה, בדף הזה מניחים שיש לכם:

הוספת מכסת שימוש לקובץ התצורה של gRPC API

בקטע הבא מוסבר איך להוסיף את ההגדרות הנדרשות לקובץ ההגדרות של gRPC API כדי להגדיר מכסות. לצורך פשטות, בדף הזה קובץ ההגדרה של gRPC API נקרא קובץ api_config.yaml.

מוסיפים את שלושת הקטעים הבאים לקובץ api_config.yaml:

  • metrics: מדד בעל שם שסופר את הבקשות ל-API. מזינים שם שמתאר את המונה. השם יכול להיות קטגוריה, כמו read-requests או write-requests. לחלופין, אם מגדירים מכסה לשיטה ספציפית, כדאי לכלול את שם השיטה, לדוגמה,echo-api/echo_requests.

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

  • quota.metric_rules: metric_rule ממפה שיטות למדדים (רבים לרבים). בקשה לשיטה מקצה מונה לכל אחד מהמדדים הממופים. כשמשייכים שיטה למדד, תמיד מציינים עלות לבקשה. אתם יכולים להגדיר את העלות של כל שיטה בנפרד. כך אפשר להשתמש בשיטות שונות כדי לצרוך נתונים בקצב שונה מאותו מדד עם שם. אם אין לכם דרישה מורכבת למכסה, אתם יכולים להגדיר את העלות של כל מדד ל-1.

כדי להגדיר מכסות ב-API:

  1. פותחים את הקובץ api_config.yaml של הפרויקט בכלי לעריכת טקסט.
  2. מוסיפים את השדה metrics ברמה העליונה של הקובץ (לא מוזח או מקונן), אחרי השדה apis.`

    metrics:
      - name: "YOUR_METRIC_NAME"
        display_name: "YOUR_METRIC_DISPLAY_NAME"
            value_type: INT64
        metric_kind: DELTA`
    
    • מחליפים את YOUR_METRIC_NAME בשם שמתאר את מונה בקשות ה-API.
    • מחליפים את YOUR_METRIC_DISPLAY_NAME בטקסט שמוצג בדף Endpoints > Services > Quotas כדי לזהות את המדד.
    • השדה value_type חייב להיות INT64.
    • השדה metric_kind חייב להיות DELTA.
  3. מוסיפים שדה quota באותה רמה כמו metrics, ומוסיפים שדה limits שמוטמע בתוך הקטע quota.

    quota:
      limits:
        - name: "YOUR_LIMIT_NAME"
          metric: "YOUR_METRIC_NAME"
          unit: "1/min/{project}"
          values:
            STANDARD: VALUE_FOR_THE_LIMIT
    
    • מחליפים את YOUR_LIMIT_NAME בשם שמתאר את המגבלה.
    • מחליפים את YOUR_METRIC_NAME ב-metric.name שהוגדר קודם.
    • השדה unit חייב להיות "1/min/{project}". זהו המזהה של המגבלה לדקה לכל פרויקט.
    • השדה values חייב להכיל את הערך STANDARD.
    • מחליפים את VALUE_FOR_THE_LIMIT בערך של מספר שלם. זהו מספר הבקשות שאפליקציה שמשויכת לפרויקט של צרכן Google Cloud יכולה לשלוח בדקה.
  4. אפשר גם להגדיר מדדים נוספים ומגבלות לכל מדד.

  5. מוסיפים שורה עם הזחה מתחת ל-quota, אחרי הקטע limits.metric_rules בקטע metric_rules, משייכים method למדד שהוגדר קודם, באופן הבא:

    metric_rules:
      - metric_costs:
          YOUR_METRIC_NAME: YOUR_METRIC_COST
        selector: [METHODS]
    
    • מחליפים את YOUR_METRIC_NAME ב-metric.name שהוגדר קודם.
    • מחליפים את YOUR_METRIC_COST במספר שלם. לכל בקשה, מוסיפים למדד של מונה הבקשות את המספר שציינתם בעלות.
    • בשדה selector, אפשר לציין אחת מהאפשרויות הבאות:

      • כדי לשייך את כל השיטות בכל ממשקי ה-API ל-metric_cost use selector: "*"
      • כדי לשייך את כל השיטות ב-API ל-metric_cost, משתמשים ב-selector: YOUR_API_NAME.*
      • כדי לשייך שיטה ספציפית ב-API ל-metric_cost משתמשים ב-selector: YOUR_API_NAME.YOUR_METHOD_NAME
  6. שומרים את קובץ ה-api_config.yaml.

דוגמאות להגדרת מכסות

בדוגמאות הבאות מוצגות שלוש דרכים להגדרת מכסות ב-API.

בדוגמה הבאה אפשר לראות איך מגדירים את השדה metric:

metrics:
  # Define a metric for read requests.
  - name: "read-requests"
    display_name: "Read requests"
    value_type: INT64
    metric_kind: DELTA`

בדוגמה הבאה אפשר לראות איך מגדירים את השדות quota ו-limits בקטע quota:

metrics:
  # Define a metric for read requests.
  - name: "read-requests"
    display_name: "Read requests"
    value_type: INT64
    metric_kind: DELTA
quota:
  limits:
    # Define the limit or the read-requests metric.
    - name: "read-limit"
      metric: "read-requests"
      unit: "1/min/{project}"
      values:
        STANDARD: 1000

בדוגמה הבאה אפשר לראות איך מגדירים את השורה metrics אחרי הקטע limits:

  metrics:
    # Define a metric for read requests.
    - name: "read-requests"
      display_name: "Read requests"
      value_type: INT64
      metric_kind: DELTA
  quota:
    limits:
      # Define the limit or the read-requests metric.
      - name: "read-limit"
        metric: "read-requests"
        unit: "1/min/{project}"
        values:
          STANDARD: 1000
    metric_rules:
      - metric_costs:
          "read-requests": 1
        selector: *

פריסת קובץ api_config.yaml ו-ESP

כדי שהמכסה תיכנס לתוקף, אתם צריכים:

  1. פורסים את הקובץ api_config.yaml ב-Service Management, וכך מעדכנים את ההגדרות ב-Endpoints. שלבים מפורטים מופיעים במאמר בנושא פריסת ההגדרה של Endpoints.
  2. פורסים את ה-ESP. שלבים מפורטים מופיעים במאמר בנושא פריסת קצה העורפי של ה-API.