token

package
v1.18.0 Latest Latest
Warning

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

Go to latest
Published: Mar 4, 2024 License: Apache-2.0, BSD-2-Clause, BSD-3-Clause, + 3 more Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PluginName = "token-bucket"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type APILimitConfig

type APILimitConfig struct {
	// 系统是否开启API限流
	Open bool `yaml:"open" mapstructure:"open"`
	// 配置规则集合
	Rules []*RateLimitRule `yaml:"rules" mapstructure:"rules"`
	// 每个接口的单独配置
	Apis []*APILimitInfo `yaml:"apis" mapstructure:"apis"`
}

APILimitConfig api限流配置

type APILimitInfo

type APILimitInfo struct {
	// 接口名,比如对于HTTP,就是:方法+URL
	Name string `yaml:"name" mapstructure:"name"`
	// 限制规则名
	Rule string `yaml:"rule" mapstructure:"rule"`
}

APILimitInfo 每个接口的单独配置信息

type BucketRatelimit

type BucketRatelimit struct {
	// 是否开启限流
	Open bool `yaml:"open" mapstructure:"open"`
	// 令牌桶大小
	Bucket int `yaml:"bucket" mapstructure:"bucket"`
	// 每秒加入的令牌数
	Rate int `yaml:"rate" mapstructure:"rate"`
}

BucketRatelimit 针对令牌桶的具体配置

type Config

type Config struct {
	// Enable 是否启用
	Enable bool `yaml:"enable" mapstructure:"enable"`
	// RuleFile
	RuleFile string `yaml:"rule-file" mapstructure:"rule-file"`
	// 是否启用远程配置,默认false。TODO 暂时无远程配置,后续版本补全,如果开启,则默认监听 Polaris/polaris-system 分组下的 plugin-ratelimit.yaml 配置文件
	RemoteConf bool `yaml:"remote-conf" mapstructure:"remote-conf"`
	// IP限流相关配置
	IPLimitConf *ResourceLimitConfig `yaml:"ip-limit" mapstructure:"ip-limit"`
	// 接口限流相关配置
	APILimitConf *APILimitConfig `yaml:"api-limit" mapstructure:"api-limit"`
	// 基于实例的限流配置
	InstanceLimitConf *ResourceLimitConfig `yaml:"instance-limit" mapstructure:"instance-limit"`
}

Config 限流配置类

type RateLimitRule

type RateLimitRule struct {
	// 规则名
	Name string `yaml:"name" mapstructure:"name"`
	// 规则的限制
	Limit *BucketRatelimit `yaml:"limit" mapstructure:"limit"`
}

RateLimitRule 限流规则

type ResourceLimitConfig

type ResourceLimitConfig struct {
	// 是否开启instance限流
	Open bool `yaml:"open" mapstructure:"open"`
	// 全局限制规则,只有一条规则
	Global *BucketRatelimit `yaml:"global" mapstructure:"global"`
	// 本地缓存最大多少个instance的限制器
	MaxResourceCacheAmount int `yaml:"resource-cache-amount" mapstructure:"resource-cache-amount"`
	// 白名单
	WhiteList []string `yaml:"white-list" mapstructure:"white-list"`
}

ResourceLimitConfig 基于资源的限流配置 资源可以是:IP,实例,服务等

Jump to

Keyboard shortcuts

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