ratelimit

package
v0.18.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 1, 2021 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrResourceNotAvailable = errors.New("naza.ratelimit: resource not available")
View Source
var ErrTokenNotEnough = errors.New("naza.ratelimit: token not enough")

Functions

This section is empty.

Types

type LeakyBucket

type LeakyBucket struct {
	// contains filtered or unexported fields
}

漏桶

func NewLeakyBucket

func NewLeakyBucket(intervalMSec int) *LeakyBucket

intervalMSec 多长时间以上,允许获取到一个资源,单位毫秒

func (*LeakyBucket) MaybeAvailableIntervalMSec

func (lb *LeakyBucket) MaybeAvailableIntervalMSec() int64

最快可获取到资源距离当前的时长, 但是不保证获取时一定能抢到 返回0,说明可以获取,返回非0,则是对应的时长,单位毫秒

func (*LeakyBucket) TryAquire

func (lb *LeakyBucket) TryAquire() error

尝试获取资源,获取成功返回nil,获取失败返回ErrResourceNotAvailable 如果获取失败,上层可自由选择多久后重试或丢弃本次任务

func (*LeakyBucket) WaitUntilAquire

func (lb *LeakyBucket) WaitUntilAquire()

阻塞直到获取到资源

type RateLimiter

type RateLimiter interface {
	TryAquire() error
	WaitUntilAquire()
}

type TokenBucket

type TokenBucket struct {
	// contains filtered or unexported fields
}

令牌桶

func NewTokenBucket

func NewTokenBucket(capacity int, prodTokenIntervalMSec int, prodTokenNumEveryInterval int) *TokenBucket

capacity: 桶容量大小 prodTokenIntervalMSec: 生产令牌的时间间隔,单位毫秒 prodTokenNumEveryInterval: 每次生产多少个令牌

func (*TokenBucket) Dispose

func (tb *TokenBucket) Dispose()

销毁令牌桶

func (*TokenBucket) TryAquire

func (tb *TokenBucket) TryAquire() error

func (*TokenBucket) TryAquireWithNum

func (tb *TokenBucket) TryAquireWithNum(num int) error

尝试获取相应数量的令牌,获取成功返回nil,获取失败返回ErrTokenNotEnough 如果获取失败,上层可自由选择多久后重试或丢弃本次任务

func (*TokenBucket) WaitUntilAquire

func (tb *TokenBucket) WaitUntilAquire()

func (*TokenBucket) WaitUntilAquireWithNum

func (tb *TokenBucket) WaitUntilAquireWithNum(num int)

阻塞直到获取到相应数量的令牌

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL