Documentation
¶
Index ¶
- type BucketShareInfo
- type QuotaBucketReject
- func (q *QuotaBucketReject) GetAmountInfos() []ratelimiter.AmountInfo
- func (q *QuotaBucketReject) GetQuota(curTimeMs int64, token uint32) *model.QuotaResponse
- func (q *QuotaBucketReject) GetQuotaUsed(curTimeMilli int64) ratelimiter.UsageInfo
- func (q *QuotaBucketReject) OnRemoteUpdate(remoteQuota ratelimiter.RemoteQuotaResult)
- func (q *QuotaBucketReject) Release()
- type RateLimiterReject
- func (g *RateLimiterReject) Destroy() error
- func (g *RateLimiterReject) Init(ctx *plugin.InitContext) error
- func (g *RateLimiterReject) InitQuota(criteria *ratelimiter.InitCriteria) ratelimiter.QuotaBucket
- func (g *RateLimiterReject) IsEnable(cfg config.Configuration) bool
- func (g *RateLimiterReject) Name() string
- func (g *RateLimiterReject) Type() common.Type
- type RemoteAwareQpsBucket
- func (r *RemoteAwareQpsBucket) Allocate(curTimeMs int64, token uint32) *model.QuotaResponse
- func (r *RemoteAwareQpsBucket) GetQuotaUsed(serverTimeMilli int64) ratelimiter.UsageInfo
- func (r *RemoteAwareQpsBucket) GetTokenBuckets() TokenBuckets
- func (r *RemoteAwareQpsBucket) Release()
- func (r *RemoteAwareQpsBucket) SetRemoteQuota(remoteQuotas ratelimiter.RemoteQuotaResult)
- type TokenBucket
- func (t *TokenBucket) ConfirmLimited(limited uint32, nowMilli int64)
- func (t *TokenBucket) ConfirmPassed(passed uint32, nowMilli int64)
- func (t *TokenBucket) GetRuleTotal() int64
- func (t *TokenBucket) GiveBackToken(identifier *UpdateIdentifier, token int64, mode TokenBucketMode)
- func (t *TokenBucket) TryAllocateToken(token uint32, nowMilli int64, identifier *UpdateIdentifier, ...) (int64, TokenBucketMode)
- func (t *TokenBucket) UpdateRemoteClientCount(remoteQuotas ratelimiter.RemoteQuotaResult)
- func (t *TokenBucket) UpdateRemoteToken(remoteQuotas ratelimiter.RemoteQuotaResult, updateClient bool)
- type TokenBucketMode
- type TokenBuckets
- type UpdateIdentifier
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BucketShareInfo ¶ added in v1.2.0
type BucketShareInfo struct {
// contains filtered or unexported fields
}
BucketShareInfo 通用信息
type QuotaBucketReject ¶ added in v1.2.0
type QuotaBucketReject struct {
// contains filtered or unexported fields
}
func (*QuotaBucketReject) GetAmountInfos ¶ added in v1.2.0
func (q *QuotaBucketReject) GetAmountInfos() []ratelimiter.AmountInfo
GetAmountInfos 获取规则的限流阈值信息
func (*QuotaBucketReject) GetQuota ¶ added in v1.2.0
func (q *QuotaBucketReject) GetQuota(curTimeMs int64, token uint32) *model.QuotaResponse
GetQuota 在令牌桶/漏桶中进行单个配额的划扣,并返回本次分配的结果
func (*QuotaBucketReject) GetQuotaUsed ¶ added in v1.2.0
func (q *QuotaBucketReject) GetQuotaUsed(curTimeMilli int64) ratelimiter.UsageInfo
GetQuotaUsed 拉取本地使用配额情况以供上报
func (*QuotaBucketReject) OnRemoteUpdate ¶ added in v1.2.0
func (q *QuotaBucketReject) OnRemoteUpdate(remoteQuota ratelimiter.RemoteQuotaResult)
OnRemoteUpdate 远程配额更新
func (*QuotaBucketReject) Release ¶ added in v1.2.0
func (q *QuotaBucketReject) Release()
Release 释放配额(仅对于并发数限流有用)
type RateLimiterReject ¶
type RateLimiterReject struct {
*plugin.PluginBase
}
RateLimiterReject 基于直接拒绝策略的限流控制器
func (*RateLimiterReject) Destroy ¶
func (g *RateLimiterReject) Destroy() error
Destroy 销毁插件,可用于释放资源
func (*RateLimiterReject) Init ¶
func (g *RateLimiterReject) Init(ctx *plugin.InitContext) error
Init 初始化插件
func (*RateLimiterReject) InitQuota ¶
func (g *RateLimiterReject) InitQuota(criteria *ratelimiter.InitCriteria) ratelimiter.QuotaBucket
InitQuota 初始化并创建限流窗口 主流程会在首次调用,以及规则对象变更的时候,调用该方法
func (*RateLimiterReject) IsEnable ¶
func (g *RateLimiterReject) IsEnable(cfg config.Configuration) bool
IsEnable enable
type RemoteAwareQpsBucket ¶ added in v1.2.0
type RemoteAwareQpsBucket struct {
// contains filtered or unexported fields
}
RemoteAwareQpsBucket 远程配额分配的算法桶
func NewRemoteAwareQpsBucket ¶ added in v1.2.0
func NewRemoteAwareQpsBucket(criteria *ratelimiter.InitCriteria) *RemoteAwareQpsBucket
NewRemoteAwareQpsBucket 创建QPS远程限流窗口
func (*RemoteAwareQpsBucket) Allocate ¶ added in v1.2.0
func (r *RemoteAwareQpsBucket) Allocate(curTimeMs int64, token uint32) *model.QuotaResponse
Allocate 执行配额分配操作
func (*RemoteAwareQpsBucket) GetQuotaUsed ¶ added in v1.2.0
func (r *RemoteAwareQpsBucket) GetQuotaUsed(serverTimeMilli int64) ratelimiter.UsageInfo
func (*RemoteAwareQpsBucket) GetTokenBuckets ¶ added in v1.2.0
func (r *RemoteAwareQpsBucket) GetTokenBuckets() TokenBuckets
func (*RemoteAwareQpsBucket) Release ¶ added in v1.2.0
func (r *RemoteAwareQpsBucket) Release()
Release 执行配额回收操作
func (*RemoteAwareQpsBucket) SetRemoteQuota ¶ added in v1.2.0
func (r *RemoteAwareQpsBucket) SetRemoteQuota(remoteQuotas ratelimiter.RemoteQuotaResult)
SetRemoteQuota 设置通过限流服务端获取的远程QPS
type TokenBucket ¶ added in v1.2.0
type TokenBucket struct { UpdateIdentifier // contains filtered or unexported fields }
TokenBucket 令牌桶
func NewTokenBucket ¶ added in v1.2.0
func NewTokenBucket( windowKey string, validDuration time.Duration, tokenAmount uint32, shareInfo *BucketShareInfo) *TokenBucket
NewTokenBucket 创建令牌桶
func (*TokenBucket) ConfirmLimited ¶ added in v1.2.0
func (t *TokenBucket) ConfirmLimited(limited uint32, nowMilli int64)
ConfirmLimited 记录限流分配配额
func (*TokenBucket) ConfirmPassed ¶ added in v1.2.0
func (t *TokenBucket) ConfirmPassed(passed uint32, nowMilli int64)
ConfirmPassed 记录真实分配配额
func (*TokenBucket) GetRuleTotal ¶ added in v1.2.0
func (t *TokenBucket) GetRuleTotal() int64
GetRuleTotal 获取限流总量
func (*TokenBucket) GiveBackToken ¶ added in v1.2.0
func (t *TokenBucket) GiveBackToken(identifier *UpdateIdentifier, token int64, mode TokenBucketMode)
GiveBackToken 归还配额
func (*TokenBucket) TryAllocateToken ¶ added in v1.2.0
func (t *TokenBucket) TryAllocateToken( token uint32, nowMilli int64, identifier *UpdateIdentifier, mode TokenBucketMode) (int64, TokenBucketMode)
TryAllocateToken 尝试分配配额
func (*TokenBucket) UpdateRemoteClientCount ¶ added in v1.2.0
func (t *TokenBucket) UpdateRemoteClientCount(remoteQuotas ratelimiter.RemoteQuotaResult)
UpdateRemoteClientCount 只更新远程客户端数量,不更新配额
func (*TokenBucket) UpdateRemoteToken ¶ added in v1.2.0
func (t *TokenBucket) UpdateRemoteToken(remoteQuotas ratelimiter.RemoteQuotaResult, updateClient bool)
UpdateRemoteToken 更新远程配额
type TokenBucketMode ¶ added in v1.2.0
type TokenBucketMode int
const ( Unknown TokenBucketMode = iota Remote RemoteToLocal Local )
type TokenBuckets ¶ added in v1.2.0
type TokenBuckets []*TokenBucket
TokenBuckets 令牌桶序列
func (TokenBuckets) Less ¶ added in v1.2.0
func (tbs TokenBuckets) Less(i, j int) bool
Less 比较数组成员大小
type UpdateIdentifier ¶ added in v1.2.0
type UpdateIdentifier struct {
// contains filtered or unexported fields
}
UpdateIdentifier 令牌桶是否进行更新的凭证