Documentation ¶
Overview ¶
Package degrade 熔断限流插件 熔断限流插件 author:boxbai@tencent.com date 2019-11-11
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // UpdateSysPeriod 更新系统数据同步状态的时间周期 UpdateSysPeriod = 30 // WaitCPUTime cpu 使用率的平均值区间周期,单位 Second WaitCPUTime = 90 )
Functions ¶
func Filter ¶
func Filter( ctx context.Context, req interface{}, handler filter.ServerHandleFunc, ) (interface{}, error)
Filter 声明熔断组件的 filter 来充当拦截器
func GetLoadAvg ¶
GetLoadAvg 获取 load 负载,包含 load1,load5,load15
Types ¶
type Config ¶
type Config struct { // Load5 5 分钟 触发熔断的阈值,恢复时使用实时 load1 <= 本值来判断,更敏感 Load5 float64 `yaml:"load5"` // CPUIdle cpuidle 触发熔断的阈值 CPUIdle int `yaml:"cpu_idle"` // MemoryUsepercent 内存使用率百分比 触发熔断的阈值 MemoryUsePercent int `yaml:"memory_use_p"` // DegradeRate 流量抛弃比例,目前使用随机算法抛弃,迭代加入其他均衡算法 DegradeRate int `yaml:"degrade_rate"` // Interval 心跳时间间隔,主要控制多久更新一次熔断开关状态 Interval int `yaml:"interval"` // Modulename 模块名,后续用于上报鹰眼或其他日志 Modulename string `yaml:"modulename"` // Whitelist 白名单,用于后续跳过不被熔断控制的业务接口 Whitelist string `yaml:"whitelist"` // IsActive 标志熔断是否生效 IsActive bool `yaml:"-"` // MaxConcurrentCnt 最大并发请求数,<=0 时不开启,控制最大并发请求数,和上述熔断互为补充,能防止突发流量把服务打死,比如 1ms 内突然进入 100W 请求 MaxConcurrentCnt int `yaml:"max_concurrent_cnt"` // MaxTimeOutMs 超过最大并发请求数时,最多等待 MaxTimeOutMs 才决定是熔断还是继续处理 MaxTimeOutMs int `yaml:"max_timeout_ms"` }
Config 熔断配置结构体声明
Click to show internal directories.
Click to hide internal directories.