通用速率限制组件(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
即使路由没有速率限制策略,也要忽略虚拟主机速率限制。