通用速率限制组件(proto)

extensions.common.ratelimit.v3.RateLimitDescriptor

[extensions.common.ratelimit.v3.RateLimitDescriptor proto]

RateLimitDescriptor 是一个分层条目列表,服务使用它来确定最终的速率限制键和整体允许的限制。以下是一些示例说明它们如何在域“envoy”中使用的。

["authenticated": "false"], ["remote_address": "10.0.0.1"]

作用:限制 IP 地址 10.0.0.1 的所有未经身份验证的流量。该配置为remote_address 键提供默认限制。如果希望为 10.0.0.1 提高限制或完全阻止它,可以在配置中直接指定。

["authenticated": "false"], ["path": "/foo/bar"]

作用:限制特定路径(或在服务中以这种方式配置的前缀)的全局所有未经身份验证的流量。

["authenticated": "false"], ["path": "/foo/bar"], ["remote_address": "10.0.0.1"]

作用:限制特定 IP 地址的特定路径的未经身份验证的流量。与(1)一样,如果需要,我们可以使用覆盖配置提高/阻止特定 IP 地址。

["authenticated": "true"], ["client_id": "foo"]

作用:限制已验证的客户端“foo”的所有流量。

["authenticated": "true"], ["client_id": "foo"], ["path": "/foo/bar"]

作用:限制已验证的客户端“foo”的特定路径的流量。

该 API 的理念是,如果需要,可以将(1)/(2)/(3)和(4)/(5)发送到一个请求中。这使得可以使用通用后端构建复杂应用程序场景。

可选地,描述符可以在“limit”键下包含一个限制覆盖,该覆盖指定要使用的每单位请求数,而不是速率限制服务中配置的请求数。

{
  "entries": [],
  "limit": {...}
}
entries

(repeated extensions.common.ratelimit.v3.RateLimitDescriptor.Entry, REQUIRED) 描述符条目。

limit

(extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride) 可选的速率限制覆盖,提供给速率限制服务。

extensions.common.ratelimit.v3.RateLimitDescriptor.Entry

[extensions.common.ratelimit.v3.RateLimitDescriptor.Entry proto]

{
  "key": ...,
  "value": ...
}
key

(string, REQUIRED) 描述符键。

value

(string, REQUIRED) 描述符值。

extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride

[extensions.common.ratelimit.v3.RateLimitDescriptor.RateLimitOverride proto]

要应用于此描述符的覆盖速率限制,而不是速率限制服务中配置的限制。有关更多信息,请参见速率限制覆盖

{
  "requests_per_unit": ...,
  "unit": ...
}
requests_per_unit

(uint32) 每单位时间请求数。

unit

(type.v3.RateLimitUnit) 时间单位。

extensions.common.ratelimit.v3.LocalRateLimitDescriptor

[extensions.common.ratelimit.v3.LocalRateLimitDescriptor proto]

{
  "entries": [],
  "token_bucket": {...}
}
entries

(repeated extensions.common.ratelimit.v3.RateLimitDescriptor.Entry, REQUIRED) 描述符条目。

token_bucket

(type.v3.TokenBucket, REQUIRED) 用于本地速率限制的令牌桶算法。

extensions.common.ratelimit.v3.LocalClusterRateLimit

[extensions.common.ratelimit.v3.LocalClusterRateLimit proto]

用于启用本地集群级速率限制的配置,其中令牌桶将在本地集群中的所有 Envoy 实例之间共享。将根据本地集群的成员资格和配置动态计算份额。当限制器重新填充令牌桶时,将应用份额。默认情况下,令牌桶将被平均共享。

有关本地集群的更多上下文,请参见本地集群名称

枚举 extensions.common.ratelimit.v3.XRateLimitHeadersRFCVersion

[extensions.common.ratelimit.v3.XRateLimitHeadersRFCVersion proto]

定义要用于 X-RateLimit 标头的标准版本。

OFF

(DEFAULT) ⁣X-RateLimit 标头已禁用。

DRAFT_VERSION_03

⁣使用草案 RFC 版本 03,将添加 3 个标头

  • X-RateLimit-Limit - 指示当前时间窗口中与客户端关联的请求配额,后跟配额策略的描述。该值由令牌桶的最大令牌数返回。

  • X-RateLimit-Remaining - 指示当前时间窗口中剩余的请求。该值由令牌桶中剩余的令牌数返回。

  • X-RateLimit-Reset - 指示当前时间窗口重置前的秒数。该值由令牌桶的剩余填充间隔返回。

枚举 extensions.common.ratelimit.v3.VhRateLimitsOptions

[extensions.common.ratelimit.v3.VhRateLimitsOptions proto]

OVERRIDE

(DEFAULT) ⁣使用虚拟主机速率限制,除非路由有速率限制策略。

INCLUDE

⁣即使路由有速率限制策略,也要使用虚拟主机速率限制。

IGNORE

⁣即使路由没有速率限制策略,也要忽略虚拟主机速率限制。