【发布时间】:2020-02-06 22:58:32
【问题描述】:
我正在尝试弄清楚如何将前端特使中的速率限制设置为其他服务。
我参考了他们的文档,但无法看到配置的实际工作原理。也遇到了lyft ratelimit,但这里也没有指定如何使用这个配置。
谁能帮我解决这个问题?
【问题讨论】:
-
有人创建了一个指南here,可能对您有所帮助。
标签: grpc rate-limiting envoyproxy
我正在尝试弄清楚如何将前端特使中的速率限制设置为其他服务。
我参考了他们的文档,但无法看到配置的实际工作原理。也遇到了lyft ratelimit,但这里也没有指定如何使用这个配置。
谁能帮我解决这个问题?
【问题讨论】:
标签: grpc rate-limiting envoyproxy
Envoy 的速率限制过滤器依赖于全局 gRPC 速率限制服务,例如 Lyft 的参考实现。要使用他们的,您必须构建它。值得庆幸的是,贡献者合并到了一个您可以使用的 Dockerfile 中,但是您需要添加 CMD ./bin/ratelimit 来告诉 Docker 映像在启动时运行。
解释速率限制过滤器的最简单方法是它允许匹配在实际速率限制服务中配置的规则(即,速率限制实际上并未在 Envoy 配置中设置) .
例如,给定网络速率限制过滤器配置:
- name: envoy.ratelimit
typed_config:
"@type": "type.googleapis.com/envoy.config.filter.network.rate_limit.v2.RateLimit"
stat_prefix: ratelimiter
domain: myservice-ratelimiter
descriptors:
- entries:
- key: path
value: "/"
failure_mode_deny: true
rate_limit_service:
grpc_service:
envoy_grpc:
cluster_name: my-ratelimit-cluster # define a Cluster pointing to the ratelimit service
然后您可以按如下方式配置 Lyft 的 ratelimit 服务(参见 Lyft 的示例 config.yaml):
domain: myservice-ratelimiter
descriptors:
- key: path
value: "/"
rate_limit:
unit: second
requests_per_unit: 50
HTTP 速率限制过滤器的配置看起来略有不同,但这应该可以让您找到正确的方向。
【讨论】: