一个自适应限流器
实现是用一个动态的处理窗口,先用大窗口,最大限度利用服务器, 基于CPU使用率和剩余内存,判断是否接近最大处理能力, 快用完处理能力时快速缩小处理窗口,通过拒绝少部分过量请求,确保大多数请求成功处理。 和滑动窗口等其他限流算法比,好处在不限制每秒处理请求,能更大限度利用服务器.
默认限制,同时最多处理300*runtime.GOMAXPROCS(0)个请求
基于CPU使用率
- 大于85,同时最多处理10*runtime.GOMAXPROCS(0)个请求
- 大于75,同时最多处理32*runtime.GOMAXPROCS(0)个请求
- 大于65,同时最多处理64*runtime.GOMAXPROCS(0)个请求
基于剩余内存
- 小于50Mb,同时最多处理10*runtime.GOMAXPROCS(0)个请求
- 小于100Mb,同时最多处理32*runtime.GOMAXPROCS(0)个请求
- 小于150Mb,同时最多处理64*runtime.GOMAXPROCS(0)个请求
所有限制中,选择最低的。