Documentation
¶
Index ¶
- type Backoff
- func (p *Backoff) DeleteEntry(id string)
- func (p *Backoff) GC()
- func (p *Backoff) Get(id string) time.Duration
- func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool
- func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool
- func (p *Backoff) Next(id string, eventTime time.Time)
- func (p *Backoff) Reset(id string)
- type RateLimiter
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Backoff ¶
type Backoff struct {
sync.Mutex
Clock clock.Clock
// contains filtered or unexported fields
}
func NewBackOff ¶
func NewBackOff(initial, max time.Duration) *Backoff
func NewFakeBackOff ¶
func NewFakeBackOff(initial, max time.Duration, tc *clock.FakeClock) *Backoff
func (*Backoff) DeleteEntry ¶
func (p *Backoff) DeleteEntry(id string)
func (*Backoff) GC ¶
func (p *Backoff) GC()
Garbage collect records that have aged past maxDuration. Backoff users are expected to invoke this periodically.
func (*Backoff) Get ¶
func (p *Backoff) Get(id string) time.Duration
Get the current backoff Duration
func (*Backoff) IsInBackOffSince ¶
func (p *Backoff) IsInBackOffSince(id string, eventTime time.Time) bool
Returns True if the elapsed time since eventTime is smaller than the current backoff window
func (*Backoff) IsInBackOffSinceUpdate ¶
func (p *Backoff) IsInBackOffSinceUpdate(id string, eventTime time.Time) bool
Returns True if time since lastupdate is less than the current backoff window.
type RateLimiter ¶
type RateLimiter interface {
// TryAccept returns true if a token is taken immediately. Otherwise,
// it returns false.
TryAccept() bool
// Accept returns once a token becomes available.
Accept()
// Stop stops the rate limiter, subsequent calls to CanAccept will return false
Stop()
// Saturation returns a percentage number which describes how saturated
// this rate limiter is.
// Usually we use token bucket rate limiter. In that case,
// 1.0 means no tokens are available; 0.0 means we have a full bucket of tokens to use.
Saturation() float64
// QPS returns QPS of this rate limiter
QPS() float32
}
func NewFakeAlwaysRateLimiter ¶
func NewFakeAlwaysRateLimiter() RateLimiter
func NewFakeNeverRateLimiter ¶
func NewFakeNeverRateLimiter() RateLimiter
func NewTokenBucketRateLimiter ¶
func NewTokenBucketRateLimiter(qps float32, burst int) RateLimiter
NewTokenBucketRateLimiter creates a rate limiter which implements a token bucket approach. The rate limiter allows bursts of up to 'burst' to exceed the QPS, while still maintaining a smoothed qps rate of 'qps'. The bucket is initially filled with 'burst' tokens, and refills at a rate of 'qps'. The maximum number of tokens in the bucket is capped at 'burst'.