Ocelot支持对上游做访问限流,这样就可以保证下游不要负载太大了。
如果要启用访问限流,需要做如下配置:
"RateLimitOptions": {
"ClientWhitelist": [],
"EnableRateLimiting": true,
"Period": "1s",
"PeriodTimespan": 1,
"Limit": 1
}
ClientWhitelist
- 是和客户端白名单的数组。白名单里面的客户不受限流的限制。EnableRateLimiting
- 是否启用限流Period
- 标识限流作用于的时间段, 例如: 1s, 5m, 1h,1d 等。如果在这个时间段内访问的次数超过了限制,需要等PeriodTimespan
这么久才能再次发起请求。PeriodTimespan
- 单位为秒,这个值标识要多少秒后才能重试。Limit
- 标识在指定的Period
时间段里面最大能请求多少次。
可以在GlobalConfiguration
里面做如下配置:
"RateLimitOptions": {
"DisableRateLimitHeaders": false,
"QuotaExceededMessage": "Customize Tips!",
"HttpStatusCode": 999,
"ClientIdHeader" : "Test"
}
DisableRateLimitHeaders
- 是否在响应的请求头里面包含X-Rate-Limit
和Rety-After
。QuotaExceededMessage
- 设置超过限制的提示语。HttpStatusCode
- 超过限制时的Http状态码。ClientIdHeader
- Allows you to specifiy the header that should be used to identify clients. By default it is “ClientId”