1 Star 1 Fork 3

menuiis/gkit

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
client_throttling.go 857 Bytes
一键复制 编辑 原始数据 按行查看 历史
menuis 提交于 2024-04-22 10:18 +08:00 . init
package client_throttling
import "gitee.com/menciis/gkit/tools/float"
// 客户端节流算法
// google sre p330
var DefaultK = 2.0
// RejectionProbability 客户端节流算法
// requests 请求数量 应用层代码发出的所有请求的数量总计(指运行于自适应节流系统之上的应用代码
// accepts 请求接受数量 后端任务接受的请求数量
// k 倍值 降低倍值会使自适应节流算法更加激进
// 举例来说,假设将客户端请求的上限从request=2 * accepts调整为request=1.1* accepts,那么就意味着每10个后端请求之中只有1个会被拒绝
func RejectionProbability(requests int, accepts int, k float64) float64 {
return max(0, float.TruncFloat((float64(requests)-k*float64(accepts))/float64(requests+1), 2))
}
func max(a, b float64) float64 {
if a > b {
return a
}
return b
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/menciis/gkit.git
git@gitee.com:menciis/gkit.git
menciis
gkit
gkit
d3f65ed26d21

搜索帮助