Documentation
¶
Overview ¶
Package gradient implements Little's Law (L = λ * W) Gradient Adaptive Concurrency Limiting.
Index ¶
- Variables
- func WithStartTime(ctx context.Context) context.Context
- type GradientConfig
- type GradientLoadShedder
- func (g *GradientLoadShedder) Allow(ctx context.Context, resource string) error
- func (g *GradientLoadShedder) Done(ctx context.Context, resource string, err error)
- func (g *GradientLoadShedder) InFlight() int64
- func (g *GradientLoadShedder) Limit() float64
- func (g *GradientLoadShedder) RecordSample(rtt time.Duration)
- func (g *GradientLoadShedder) UpdateConfig(cfg resiliencecontract.LoadSheddingConfig)
Constants ¶
This section is empty.
Variables ¶
var ErrLoadShedded = errors.New("request shed by adaptive gradient concurrency limiter")
ErrLoadShedded is returned when a request is rejected due to adaptive concurrency overload.
Functions ¶
Types ¶
type GradientConfig ¶
type GradientConfig struct {
MinLimit float64 // Minimum concurrency floor (default: 10)
MaxLimit float64 // Maximum concurrency ceiling (default: 1000)
InitialLimit float64 // Initial concurrency limit (default: 100)
QueueSize float64 // Headroom queue size added to gradient calculation (default: 4.0)
Smoothing float64 // Exponential smoothing factor alpha (0.0 to 1.0, default: 0.2)
RttWindowSize time.Duration // Sliding window size for minRTT tracking (default: 30s)
SampleRate int64 // Sample 1 out of N requests for RTT limit updates (default: 1)
}
GradientConfig configures the Little's Law Gradient concurrency limiter.
func DefaultGradientConfig ¶
func DefaultGradientConfig() GradientConfig
DefaultGradientConfig returns sensible defaults.
type GradientLoadShedder ¶
type GradientLoadShedder struct {
// contains filtered or unexported fields
}
GradientLoadShedder implements Little's Law Gradient Adaptive Concurrency Limiting.
func NewGradientLoadShedder ¶
func NewGradientLoadShedder(cfg ...GradientConfig) *GradientLoadShedder
NewGradientLoadShedder creates a new GradientLoadShedder instance.
func (*GradientLoadShedder) Allow ¶
func (g *GradientLoadShedder) Allow(ctx context.Context, resource string) error
Allow decides whether to admit the incoming request based on current dynamic concurrency limit.
func (*GradientLoadShedder) Done ¶
func (g *GradientLoadShedder) Done(ctx context.Context, resource string, err error)
Done completes the request lifecycle, updates inflight counts and adjusts concurrency limits via RTT sampling.
func (*GradientLoadShedder) InFlight ¶
func (g *GradientLoadShedder) InFlight() int64
InFlight returns current inflight requests.
func (*GradientLoadShedder) Limit ¶
func (g *GradientLoadShedder) Limit() float64
Limit returns current concurrency limit.
func (*GradientLoadShedder) RecordSample ¶
func (g *GradientLoadShedder) RecordSample(rtt time.Duration)
RecordSample explicitly records an RTT sample and updates Little's Law Gradient concurrency limits.
func (*GradientLoadShedder) UpdateConfig ¶
func (g *GradientLoadShedder) UpdateConfig(cfg resiliencecontract.LoadSheddingConfig)
UpdateConfig updates runtime configuration parameters.