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.Duration expiration  
  • 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
    long getMaxAvgRequests()  
    long getMaxSpikeRequests()  
    int getNumIntervals()  
    protected java.lang.String getTimeStr​(java.util.Calendar cal)  
    protected abstract java.lang.Long increment​(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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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 requests
      maxSpikeRequests - threshold max number of requests
      numIntervals - number of buckets
      bucketTimeInterval - length of each bucket
      unit - 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:
      internalAllow in class NamedRateLimiter
    • getTimeStr

      protected java.lang.String getTimeStr​(java.util.Calendar cal)
    • getMaxAvgRequests

      public long getMaxAvgRequests()
    • getMaxSpikeRequests

      public long getMaxSpikeRequests()
    • getNumIntervals

      public int getNumIntervals()