
WarmUpController 是QPS动态变化,一开始把qps限制低一点,后面再慢慢把qps限制高一点
RateLimiterController :排队等待模式,基于漏桶算法
固定速率的放行

com.alibaba.csp.sentinel.slots.block.flow.controller.RateLimiterController#canPass(Node, int, boolean)
long costTime = Math.round(1.0 * (acquireCount) / count * 1000);
1.0 * 1/5 * 1000 = 200毫秒
long expectedTime = costTime + latestPassedTime.get();
预期等待时间 = 请求耗时 + 上一个请求通过时间
if (expectedTime <= currentTime) {
预期等待时间 < 当前时间,说明早就可以执行了
long waitTime = costTime + latestPassedTime.get() - TimeUtil.currentTimeMillis();
maxQueueingTimeMs 超时时间
等待时间 大于超时时间,返回false,表示等得太久了
long oldTime = latestPassedTime.addAndGet(costTime);
waitTime = oldTime - TimeUtil.currentTimeMillis();
如果等待的时间一直在超市时间范围内,那么还能继续尝试判断,休眠一段时间后继续判断
if (waitTime > maxQueueingTimeMs) {
浙公网安备 33010602011771号