ASM通过ASMGlobalRateLimiter实现全局限流的声明式配置。本文介绍ASMGlobalRateLimiter的字段说明。
spec
字段 | 类型 | 是否必选 | 说明 |
workloadSelector | map<string, string> | 是 | 通过一个或多个标签,指明限流配置生效的一组特定的工作负载。标签搜索的范围限制在资源所在的配置命名空间。更多信息,请参见Workload Selector。 |
isGateway | bool | 否 | 限流配置生效的工作负载是否为网关,默认为false。 |
rateLimitService | 是 | 限流服务配置。 | |
configs | 是 | 全局限流配置,可配置多条。 |
RateLimitServiceConfig
字段 | 类型 | 是否必选 | 说明 |
host | string | 是 | 限流服务Service的集群域名。 |
port | int | 是 | 限流服务的Service gRPC端口。 |
timeout | Duration | 否 | 网格代理连接限流服务的超时时间。例如 |
GlobalRateLimiterConfig
字段 | 类型 | 是否必选 | 说明 |
name | string | 是 | 单条限流配置的名称。 |
match | 是 | 匹配条件。 | |
limit | 是 | 限流阈值配置。 | |
limit_overrides | 否 | 限流阈值覆盖配置。可通过该字段针对特定的请求指定单独的限流阈值。支持配置多个覆盖配置。 说明 仅支持ASM 1.19.0及以上版本。 |
RatelimitMatch
字段 | 类型 | 是否必选 | 说明 |
vhost | 是 | VirtualHost匹配条件。 |
GlobalServiceLimitConfig
字段 | 类型 | 是否必选 | 说明 |
unit | string | 是 | 限流计量时间单位。取值:
|
quota | int | 是 | 单位时间内允许的请求总量。 |
GlobalRateLimitOverrideConfig
字段 | 类型 | 是否必选 | 说明 |
request_match | 是 | 限流阈值覆盖配置指定的请求匹配条件。只有匹配条件的请求会应用覆盖配置中的限流阈值。 | |
limit | 是 | 限流阈值覆盖配置指定的请求限流阈值。 |
VirtualHostMatch
字段 | 类型 | 是否必选 | 说明 |
name | string | 是 | 匹配的VirtualHost名称。 |
port | int | 否 | 匹配的请求端口。 |
route | 否 | 匹配的请求接口对应的路由名称。 |
RouteMatch
字段 | 类型 | 是否必选 | 说明 |
name_match | string | 否 | 匹配的路由名称,对应VirtualService下的单条路由名称。 |
header_match | 否 | 匹配服务请求的Header,支持配置多个。 说明 在ASM 1.19.0及以上版本,该字段被标注为废弃(Deprecated),请使用GlobalRateLimitOverrideConfig对请求进行匹配。 |
RequestMatcher
RequestMatcher中的多个字段可以同时使用。同时使用时,请求必须同时符合每个字段的匹配条件才会被匹配。
字段 | 类型 | 是否必选 | 说明 |
header_match | 否 | 匹配请求的header,支持配置多个。 | |
remote_address | 否 | 匹配请求的源IP。 | |
query_match | 否 | 匹配请求的查询参数(query params),支持配置多个。 |
RemoteAddressMatcher
字段 | 类型 | 是否必选 | 说明 |
address | string | 是 | 匹配的请求源的IP地址。 |
v4_prefix_mask_len | unit32 | 否 | 如果需要匹配IPv4地址范围,在此字段填写IPv4地址子网掩码长度,并在address处填写IPv4地址。将会匹配address在掩码后的地址范围。 |
v6_prefix_mask_len | unit32 | 否 | 如果需要匹配IPv6地址范围,在此字段填写IPv6地址子网掩码长度,并在address处填写IPv6地址。将会匹配address在掩码后的地址范围。 |
HeaderMatcher
字段 | 类型 | 是否必选 | 说明 | |
name | string | 否 | Header名称。 | |
任选其一 | regex_match | string | 否 | 正则表达式匹配。 |
exact_match | string | 否 | 精确匹配。 | |
prefix_match | string | 否 | 前缀匹配,以什么开头进行匹配。 | |
suffix_match | string | 否 | 后缀匹配,以什么结尾进行匹配。 | |
present_match | bool | 否 |
| |
invert_match | bool | 否 | 默认为false。
|
QueryParameterMatcher
字段 | 类型 | 是否必选 | 说明 | |
name | string | 是 | 查询参数的名称。 | |
任选其一 | exact_match | string | 否 | 精确匹配查询参数的内容。 |
prefix_match | string | 否 | 前缀匹配查询参数的内容。 | |
suffix_match | string | 否 | 后缀匹配查询参数的内容。 | |
regex_match | string | 否 | 正则表达式匹配查询参数的内容。 | |
contains_match | string | 否 | 包含匹配查询参数的内容,即要求查询参数的内容必须包含某个子串。 | |
present_match | bool | 否 |
| |
ignore_case | bool | 否 | 是否在匹配查询参数时忽略大小写。 |