# README
bbr
import "github.com/ccheers/xpkg/ratelimit/bbr"
Index
Variables
var ErrLimitExceed = fmt.Errorf("limit exceed")
type BBR
BBR implements bbr-like limiter. It is inspired by sentinel. https://github.com/alibaba/Sentinel/wiki/%E7%B3%BB%E7%BB%9F%E8%87%AA%E9%80%82%E5%BA%94%E9%99%90%E6%B5%81
type BBR struct {
// contains filtered or unexported fields
}
func (*BBR) Allow
func (l *BBR) Allow(ctx context.Context, opts ...limit.AllowOption) (func(info limit.DoneInfo), error)
Allow checks all inbound traffic. Once overload is detected, it raises ecode.LimitExceed error.
func (*BBR) Stat
func (l *BBR) Stat() Stat
Stat tasks a snapshot of the bbr limiter.
type Config
Config contains configs of bbr limiter.
type Config struct {
Enabled bool
Window time.Duration
WinBucket int
Rule string
Debug bool
CPUThreshold int64
}
type CounterCache
CounterCache is used to cache maxPASS and minRt result. Value of current bucket is not counted in real time. Cache time is equal to a bucket duration.
type CounterCache struct {
// contains filtered or unexported fields
}
type Group
Group represents a class of BBRLimiter and forms a namespace in which units of BBRLimiter.
type Group struct {
// contains filtered or unexported fields
}
func NewGroup
func NewGroup(conf *Config) *Group
NewGroup new a limiter group container, if conf nil use default conf.
func (*Group) Get
func (g *Group) Get(key string) limit.Limiter
Get get a limiter by a specified key, if limiter not exists then make a new one.
type Stat
Stat contains the metrics's snapshot of bbr.
type Stat struct {
CPU int64
InFlight int64
MaxInFlight int64
MinRt int64
MaxPass int64
}
Generated by gomarkdoc