loadshedding

package
v0.1.4 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2026 License: MIT Imports: 7 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

This section is empty.

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 noop 提供 LoadShedding 的空实现。
Package noop 提供 LoadShedding 的空实现。

Jump to

Keyboard shortcuts

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