loadshedding

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2026 License: MIT Imports: 8 Imported by: 0

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

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

NewLoadShedderFromConfig 根据配置创建 LoadShedder 实例。

Types

type Provider

type Provider struct{}

Provider 是 LoadShedder 能力 provider。 将 LoadShedding 契约实现注册到容器中,供 HTTP 中间件和 RPC 客户端使用。

中文说明: - 根据 strategy 配置选择 semaphore 或 bbr 实现; - semaphore:固定并发数控制,默认最大并发 = GOMAXPROCS * 100; - bbr:自适应过载保护,根据 CPU + inflight 动态调整。

func NewProvider

func NewProvider() *Provider

NewProvider 创建 LoadShedding provider。

func (*Provider) Boot

Boot 启动期初始化(无额外操作)。

func (*Provider) DependsOn

func (p *Provider) DependsOn() []string

DependsOn returns the keys this provider depends on. LoadShedding provider has no dependencies.

DependsOn 返回该 provider 依赖的 key。 LoadShedding provider 无依赖。

func (*Provider) IsDefer

func (p *Provider) IsDefer() bool

IsDefer 标记此 provider 延迟装载。

func (*Provider) Name

func (p *Provider) Name() string

Name 返回 provider 唯一名称。

func (*Provider) Provides

func (p *Provider) Provides() []string

Provides 返回该 provider 提供的容器 key 列表。

func (*Provider) Register

func (p *Provider) Register(c runtimecontract.Container) error

Register 将 LoadShedder 实例注册到容器。

根据 strategy 配置选择实现: - "semaphore" 或空:固定并发数控制 - "bbr":自适应过载保护

func (*Provider) Requires

func (p *Provider) Requires() []string

Requires 返回该 provider 依赖的容器 key 列表(无外部依赖)。

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 的空实现。

Jump to

Keyboard shortcuts

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