配置配额

本页面介绍如何为您的 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-requestswrite-requests。如果您要为特定方法定义配额,也许应在其中包括方法的名称,例如:echo-api/echo_requests

  • quota.limits:表示对命名指标的单一强制性限制。您可以在此处为已定义的指标配置允许的请求数。目前仅支持每个项目每分钟限制。

  • quota.metric_rulesmetric_rule 会将方法映射到指标(多对多)。对方法的请求将为每个映射的指标分配一个计数器。将方法与指标相关联时,务必指定请求的耗费。您可以单独配置每个方法的耗费,从而让不同的方法以不同的速率消耗同一个命名指标。如果没有复杂的配额要求,则可以将每个指标的费用配置为 1。

如需配置 API 配额,请执行以下操作:

  1. 在文本编辑器中打开项目的 api_config.yaml 文件。
  2. apis 字段后,在文件顶层(不缩进或嵌套)添加 metrics 字段。

    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 > 服务 > 配额页面上显示的文本,以标识指标。
    • value_type 字段必须是 INT64
    • metric_kind 字段必须是 DELTA
  3. 在与 metrics 相同的层级添加 quota 字段,并以嵌套格式将 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. limits 部分后的 quota 下,以缩进格式添加一个 metric_rules 行。在 metric_rules 部分中,将先前定义的指标与某个方法相关联,如下所示:

    metric_rules:
      - metric_costs:
          YOUR_METRIC_NAME: YOUR_METRIC_COST
        selector: [METHODS]
    
    • YOUR_METRIC_NAME 替换为先前定义的 metric.name
    • YOUR_METRIC_COST 替换为一个整数。对于每个请求,指标的请求计数器都会根据您为该耗费指定的数值递增。
    • 对于 selector 字段,您可以指定以下某种格式:

      • 如需将所有 API 中的所有方法与 metric_cost 相关联,请使用 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 部分中的 quotalimits 字段:

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

以下示例展示了如何配置 limits 部分后的 metrics 行:

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