Documentation
¶
Overview ¶
Package loadshedding 提供过载保护(LoadShedding)实现。
提供两种策略: - semaphore:固定并发数控制(默认) - bbr:基于 CPU + inflight 的自适应过载保护
适用场景: - 微服务模式下默认启用,提供 HTTP/gRPC/RPC 统一的过载保护能力; - 当系统过载时立即拒绝请求,防止级联故障。
配置示例:
load_shedding:
enabled: true
strategy: bbr # 或 semaphore
bbr:
cpu_threshold: 0.8
window_size: 10s
bucket_count: 100
Index ¶
- Variables
- func NewLoadShedderFromConfig(cfg resiliencecontract.LoadSheddingConfig) resiliencecontract.LoadShedder
- type Provider
- func (p *Provider) Boot(c runtimecontract.Container) error
- func (p *Provider) DependsOn() []string
- func (p *Provider) IsDefer() bool
- func (p *Provider) Name() string
- func (p *Provider) Provides() []string
- func (p *Provider) Register(c runtimecontract.Container) error
- func (p *Provider) Requires() []string
Constants ¶
This section is empty.
Variables ¶
View Source
var ErrLoadShedded = resiliencecontract.ServiceUnavailable("server is busy: load shedding active")
ErrLoadShedded 表示请求因过载保护被丢弃。
Functions ¶
func NewLoadShedderFromConfig ¶ added in v0.2.0
func NewLoadShedderFromConfig(cfg resiliencecontract.LoadSheddingConfig) resiliencecontract.LoadShedder
NewLoadShedderFromConfig 根据配置创建 LoadShedder 实例。
Types ¶
type Provider ¶
type Provider struct{}
Provider 是 LoadShedder 能力 provider。 将 LoadShedding 契约实现注册到容器中,供 HTTP 中间件和 RPC 客户端使用。
中文说明: - 根据 strategy 配置选择 semaphore 或 bbr 实现; - semaphore:固定并发数控制,默认最大并发 = GOMAXPROCS * 100; - bbr:自适应过载保护,根据 CPU + inflight 动态调整。
func (*Provider) Boot ¶
func (p *Provider) Boot(c runtimecontract.Container) error
Boot 启动期初始化(无额外操作)。
func (*Provider) DependsOn ¶
DependsOn returns the keys this provider depends on. LoadShedding provider has no dependencies.
DependsOn 返回该 provider 依赖的 key。 LoadShedding provider 无依赖。
Directories
¶
| Path | Synopsis |
|---|---|
|
Package bbr 提供 BBR 自适应过载保护实现。
|
Package bbr 提供 BBR 自适应过载保护实现。 |
|
Package gradient implements Little's Law (L = λ * W) Gradient Adaptive Concurrency Limiting.
|
Package gradient implements Little's Law (L = λ * W) Gradient Adaptive Concurrency Limiting. |
|
Package noop 提供 LoadShedding 的空实现。
|
Package noop 提供 LoadShedding 的空实现。 |
Click to show internal directories.
Click to hide internal directories.