计算 CPU 负载时使用滑动平均来降低 CPU 负载抖动带来的不稳定,关于滑动平均见参考资料
时间窗口机制,用滑动窗口机制来记录之前时间窗口内的 QPS 和 RT(response time)
满足以下所有条件则拒绝该请求
当前 CPU 负载超过预设阈值,或者上次拒绝时间到现在不超过 1 秒(冷却期)。冷却期是为了不能让负载刚下来就马上增加压力导致立马又上去的来回抖动
averageFlying > max(1, QPS*minRT/1e3)
averageFlying = MovingAverage(flying)
在算 MovingAverage(flying)的时候,超参 beta 默认取值为 0.9,表示计算前十次的平均 flying 值
取 flying 值的时候,有三种做法:
我们使用的是第二种,这样可以更好的防止抖动,如图:
QPS = maxPass * bucketsPerSecond
1e3 表示 1000 毫秒,minRT 单位也是毫秒,QPS*minRT/1e3 得到的就是平均每个时间点有多少并发请求
dropreq
关键字https://github.com/tal-tech/go-zero
如果觉得文章不错,欢迎 github 点个 star 🤝
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.