我试图弄清楚如何在其他服务中设置前程的速率限制。
我参考了他们的文档,但无法看到配置的实际工作方式。还遇到了lyft ratelimit,但这里也未指定如何使用此配置。
有人可以帮我吗?
最佳答案
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速率限制过滤器的配置看起来略有不同,但这应该使您指向正确的方向。
关于grpc - 特使速率限制配置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50566172/