Skip to content

Commit 2a96037

Browse files
committed
Refactor SmoothWarmupLimiter to simplify wait time calculation and improve cooldown logic
1 parent 148b50e commit 2a96037

File tree

1 file changed

+1
-20
lines changed
  • joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/ratelimit/tokenbucket

1 file changed

+1
-20
lines changed

joylive-core/joylive-governance-api/src/main/java/com/jd/live/agent/governance/invoke/ratelimit/tokenbucket/SmoothWarmupLimiter.java

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import com.jd.live.agent.governance.policy.service.limit.RateLimitPolicy;
1717
import com.jd.live.agent.governance.policy.service.limit.SlidingWindow;
1818

19-
import static java.lang.Math.min;
2019

2120
/**
2221
* SmoothWarmupLimiter
@@ -83,27 +82,9 @@ protected double getMaxStoredPermits() {
8382
return thresholdPermits + 2.0 * warmupMicros / (permitIntervalMicros + coldIntervalMicros);
8483
}
8584

86-
@Override
87-
protected long waitForStorePermits(double storedPermits, double targetPermits) {
88-
double availablePermitsAboveThreshold = storedPermits - thresholdPermits;
89-
long micros = 0;
90-
// measuring the integral on the right part of the function (the climbing line)
91-
if (availablePermitsAboveThreshold > 0.0) {
92-
double permitsAboveThresholdToTake = min(availablePermitsAboveThreshold, targetPermits);
93-
double length =
94-
permitsToTime(availablePermitsAboveThreshold)
95-
+ permitsToTime(availablePermitsAboveThreshold - permitsAboveThresholdToTake);
96-
micros = (long) (permitsAboveThresholdToTake * length / 2.0);
97-
targetPermits -= permitsAboveThresholdToTake;
98-
}
99-
// measuring the integral on the left part of the function (the horizontal line)
100-
micros += (long) (permitIntervalMicros * targetPermits);
101-
return micros;
102-
}
103-
10485
@Override
10586
protected double coolDownIntervalMicros() {
106-
return warmupMicros / maxStoredPermits;
87+
return storedPermits > thresholdPermits ? coldIntervalMicros : permitIntervalMicros;
10788
}
10889

10990
private double permitsToTime(double permits) {

0 commit comments

Comments
 (0)