Package io.datarouter.ratelimiter
Class BaseNamedMemcachedRateLimiter
java.lang.Object
io.datarouter.ratelimiter.NamedRateLimiter
io.datarouter.ratelimiter.BaseNamedMemcachedRateLimiter
- Direct Known Subclasses:
NamedMemcachedRateLimiterFactory.NamedMemcachedRateLimiter
public abstract class BaseNamedMemcachedRateLimiter extends NamedRateLimiter
-
Field Summary
Fields Modifier and Type Field Description protected java.time.Durationexpiration -
Constructor Summary
Constructors Constructor Description BaseNamedMemcachedRateLimiter(java.lang.String name, long maxAvgRequests, long maxSpikeRequests, int numIntervals, int bucketTimeInterval, java.util.concurrent.TimeUnit unit) -
Method Summary
Modifier and Type Method Description longgetMaxAvgRequests()longgetMaxSpikeRequests()intgetNumIntervals()protected java.lang.StringgetTimeStr(java.util.Calendar cal)protected abstract java.lang.Longincrement(java.lang.String key)protected io.datarouter.util.tuple.Pair<java.lang.Boolean,java.util.Calendar>internalAllow(java.lang.String key, boolean increment)protected abstract java.util.Map<java.lang.String,java.lang.Long>readCounts(java.util.List<java.lang.String> keys)Methods inherited from class io.datarouter.ratelimiter.NamedRateLimiter
allowed, allowed, allowedForIp, allowedForIp, peek
-
Field Details
-
expiration
protected final java.time.Duration expiration
-
-
Constructor Details
-
BaseNamedMemcachedRateLimiter
public BaseNamedMemcachedRateLimiter(java.lang.String name, long maxAvgRequests, long maxSpikeRequests, int numIntervals, int bucketTimeInterval, java.util.concurrent.TimeUnit unit)- Parameters:
maxAvgRequests- threshold average number of requestsmaxSpikeRequests- threshold max number of requestsnumIntervals- number of bucketsbucketTimeInterval- length of each bucketunit- time unit of bucketTimeInterval
-
-
Method Details
-
increment
protected abstract java.lang.Long increment(java.lang.String key) -
readCounts
protected abstract java.util.Map<java.lang.String,java.lang.Long> readCounts(java.util.List<java.lang.String> keys) -
internalAllow
protected io.datarouter.util.tuple.Pair<java.lang.Boolean,java.util.Calendar> internalAllow(java.lang.String key, boolean increment)- Specified by:
internalAllowin classNamedRateLimiter
-
getTimeStr
protected java.lang.String getTimeStr(java.util.Calendar cal) -
getMaxAvgRequests
public long getMaxAvgRequests() -
getMaxSpikeRequests
public long getMaxSpikeRequests() -
getNumIntervals
public int getNumIntervals()
-