---
title: Envoy 本地限流 LocalRateLimit 与路由限流策略实践
keywords: local_ratelimit, token_bucket, per-route, filter_enabled, response_headers_to_add
description: 配置 Envoy 本地限流过滤器与路由级限流,实现低延迟配额控制与不同路径的差异化速率。
categories:
- 文章资讯
- 技术教程
---
启用本地限流过滤器:
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match: { prefix: "/api/slow" }
typed_per_filter_config:
envoy.filters.http.local_ratelimit:
"@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimitPerRoute
token_bucket:
max_tokens: 20
tokens_per_fill: 20
fill_interval: 1s
route: { cluster: app }
- match: { prefix: "/api/fast" }
typed_per_filter_config:
envoy.filters.http.local_ratelimit:
"@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimitPerRoute
token_bucket:
max_tokens: 200
tokens_per_fill: 200
fill_interval: 1s
route: { cluster: app }
http_filters:
- name: envoy.filters.http.local_ratelimit
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
stat_prefix: http_local_rate_limiter
token_bucket:
max_tokens: 100
tokens_per_fill: 100
fill_interval: 1s
filter_enabled:
default_value:
numerator: 100
denominator: HUNDRED
filter_enforced:
default_value:
numerator: 100
denominator: HUNDRED
response_headers_to_add:
- append_action: APPEND_IF_EXISTS_OR_ADD
header:
key: x-rate-limit
value: local
- name: envoy.filters.http.router
clusters:
- name: app
type: LOGICAL_DNS
connect_timeout: 1s
lb_policy: ROUND_ROBIN
load_assignment:
cluster_name: app
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address: { address: 127.0.0.1, port_value: 7001 }

发表评论 取消回复