cluster_limiter

package
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 11, 2020 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultBoostBurstFactor = 10.0
View Source
const DefaultBurstIntervalSeconds = 5
View Source
const DefaultDeclineExpRatio = 0.5
View Source
const DefaultHeartbeatIntervalMilliseconds = 100
View Source
const DefaultInitPassRate = 0.0
View Source
const DefaultInitRewardRate = 1.0
View Source
const DefaultLimiterName = "lmt:"
View Source
const DefaultMaxBoostFactor = 2.0
View Source
const DefaultRewardRatioDeclineExpRatio = 0.5
View Source
const DefaultScoreSamplesSortIntervalSeconds = 10
View Source
const DefaultUpdatePassRateMinCount = 100
View Source
const DefaultUpdateRewardRateMinCount = 100

Variables

This section is empty.

Functions

This section is empty.

Types

type ClusterLimiter

type ClusterLimiter struct {
	Options *ClusterLimiterOpts

	RequestCounter *cluster_counter.ClusterCounter
	PassCounter    *cluster_counter.ClusterCounter
	RewardCounter  *cluster_counter.ClusterCounter
	// contains filtered or unexported fields
}

limiter: limit traffic within cluster

func (*ClusterLimiter) Acquire

func (limiter *ClusterLimiter) Acquire(v float64) bool

request passed and reward for short

func (*ClusterLimiter) AcquireWithScore

func (limiter *ClusterLimiter) AcquireWithScore(v float64, score float64) bool

request passed with score and reward for short

func (*ClusterLimiter) CollectMetrics added in v0.2.1

func (limiter *ClusterLimiter) CollectMetrics() bool

update metrics

func (*ClusterLimiter) Expire

func (limiter *ClusterLimiter) Expire() bool

check whether expired

func (*ClusterLimiter) GetRewardTarget

func (limiter *ClusterLimiter) GetRewardTarget() float64

func (*ClusterLimiter) Heartbeat

func (limiter *ClusterLimiter) Heartbeat()

update data heartbeat

func (*ClusterLimiter) IdealPassRate

func (limiter *ClusterLimiter) IdealPassRate() float64

ideal pass rate

func (*ClusterLimiter) IdealReward

func (limiter *ClusterLimiter) IdealReward() float64

func (*ClusterLimiter) IdealRewardRate

func (limiter *ClusterLimiter) IdealRewardRate() float64

ideal reward rate

func (*ClusterLimiter) Initialize added in v0.2.0

func (limiter *ClusterLimiter) Initialize()

init limiter

func (*ClusterLimiter) LagTime

func (limiter *ClusterLimiter) LagTime(reward float64, t time.Time) float64

Lag time from ideal reward

func (*ClusterLimiter) PassRate

func (limiter *ClusterLimiter) PassRate() float64

limiters's current pass rate

func (*ClusterLimiter) Reward

func (limiter *ClusterLimiter) Reward(v float64)

reward feedback

func (*ClusterLimiter) ScoreCut

func (limiter *ClusterLimiter) ScoreCut() (bool, float64)

score discrimination threshold for TakeWithScore

func (*ClusterLimiter) SetRewardTarget

func (limiter *ClusterLimiter) SetRewardTarget(target float64)

func (*ClusterLimiter) Take

func (limiter *ClusterLimiter) Take(v float64) bool

request passed

func (*ClusterLimiter) TakeWithScore

func (limiter *ClusterLimiter) TakeWithScore(v float64, score float64) bool

request passed with score

type ClusterLimiterFactory

type ClusterLimiterFactory struct {
	Reporter ReporterI
	// contains filtered or unexported fields
}

Producer of limiter

func NewFactory

build new factory

func (*ClusterLimiterFactory) AllLimiters added in v0.2.1

func (factory *ClusterLimiterFactory) AllLimiters() []*ClusterLimiter

func (*ClusterLimiterFactory) AllOptions added in v0.2.1

func (factory *ClusterLimiterFactory) AllOptions() []*ClusterLimiterOpts

func (*ClusterLimiterFactory) Delete

func (factory *ClusterLimiterFactory) Delete(name string)

func (*ClusterLimiterFactory) GetClusterLimiter added in v0.2.1

func (factory *ClusterLimiterFactory) GetClusterLimiter(name string) *ClusterLimiter

get limiter

func (*ClusterLimiterFactory) Heartbeat

func (factory *ClusterLimiterFactory) Heartbeat()

update

func (*ClusterLimiterFactory) LoadFile added in v0.2.1

func (factory *ClusterLimiterFactory) LoadFile(filePath string) error

func (*ClusterLimiterFactory) LoadOptions added in v0.2.1

func (factory *ClusterLimiterFactory) LoadOptions(options []*ClusterLimiterOpts) error

func (*ClusterLimiterFactory) NewClusterLimiter

func (factory *ClusterLimiterFactory) NewClusterLimiter(opts *ClusterLimiterOpts,
) (*ClusterLimiter, error)

create new limiter

func (*ClusterLimiterFactory) Start

func (factory *ClusterLimiterFactory) Start()

func (*ClusterLimiterFactory) Stop

func (factory *ClusterLimiterFactory) Stop()

func (*ClusterLimiterFactory) WatchAndSync

func (factory *ClusterLimiterFactory) WatchAndSync()

type ClusterLimiterFactoryOpts

type ClusterLimiterFactoryOpts struct {
	Name                       string
	HeartbeatInterval          time.Duration
	InitLocalTrafficProportion float64
	Store                      cluster_counter.DataStoreI
	Reporter                   ReporterI
}

options of creating limiter's factory

type ClusterLimiterOpts

type ClusterLimiterOpts struct {
	Name         string
	RewardTarget float64

	BeginTime      time.Time
	EndTime        time.Time
	CompletionTime time.Time

	PeriodInterval  time.Duration
	ReserveInterval time.Duration

	BurstInterval  time.Duration
	MaxBoostFactor float64

	DiscardPreviousData bool

	InitLocalTrafficProportion float64
	InitPassRate               float64
	InitRewardRate             float64

	UpdatePassRateMinCount   int64
	UpdateRewardRateMinCount int64

	DeclineExpRatio            float64
	RewardRatioDeclineExpRatio float64

	TakeWithScore            bool
	ScoreSamplesSortInterval time.Duration
	ScoreSamplesMax          int64
}

options for creating limiter

type ReporterI added in v0.2.1

type ReporterI interface {
	Update(name string, metrics map[string]float64)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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