基本概念
超时、熔断、限流听单,白名单不受限流规则限制。EnableRateLimiting:是否启用限流。Period:周期,单位有s(秒)、m(分)、h(时)、d(天),比如1hPeriodTimespan:多少秒后重试。Limit:周期内允许多少个请求。
想要更精细的控制,还可以在Global部分添加这些:
"RateLimitOptions": { "DisableRateLimitHeaders": false, "QuotaExceededMessage": "Customize Tips!", "HttpStatusCode": 999, "ClientIdHeader" : "Test"}DisableRateLimitHeaders:是否禁用X-Rate-Limit、Retry-After标头。QuotaExceededMessage:触发限流时返回的消息。HttpStatusCode:触发限流时返回的http状态码(一般会写429)。ClientIdHeader:用来识别客户端的标头。tips:DisableRateLimitHeaders中提到的X-Rate-Limit、Retry-After:X-Rate-Limit——标准时间内允许多少个请求,Retry-After——触发限流以后多久可以重试。接下来修改我的配置:
"RateLimitOptions": { "ClientWhitelist": [ "myclient" ], "EnableRateLimiting": true, "Period": "1s", "PeriodTimespan": 10, "Limit": 1 }修改全局配置:
"RateLimitOptions": { "DisableRateLimitHeaders": false, "QuotaExceededMessage": "123123", "HttpStatusCode": 429, "ClientIdHeader": "Test" }按配置来看,我设置1秒内最多允许1个请求,超过就触发限流。之后的请求都会返回429和123123,持续10秒。来试试:

等待10秒后再次请求,恢复正常:

白名单
白名单里的客户端是不会受到限流限制的。按照配置添加请求头,就可以被白名单识别:

请求时添加这个请求头,无论怎么刷都不会被限流。
超时、熔断、限流的必要性和好处是不言而喻的,但是上生产一定要注意配置的合理性,充分综合业务场景和需要才是王道,毕竟技术如果不解决问题那就毫无意义。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。








