Documentation ¶
Index ¶
- Constants
- type ClusterLimiter
- func (limiter *ClusterLimiter) Acquire(v float64) bool
- func (limiter *ClusterLimiter) AcquireWithScore(v float64, score float64) bool
- func (limiter *ClusterLimiter) CollectMetrics() bool
- func (limiter *ClusterLimiter) Expire() bool
- func (limiter *ClusterLimiter) GetRewardTarget() float64
- func (limiter *ClusterLimiter) Heartbeat()
- func (limiter *ClusterLimiter) IdealPassRate() float64
- func (limiter *ClusterLimiter) IdealReward() float64
- func (limiter *ClusterLimiter) IdealRewardRate() float64
- func (limiter *ClusterLimiter) Initialize()
- func (limiter *ClusterLimiter) LagTime(reward float64, t time.Time) float64
- func (limiter *ClusterLimiter) PassRate() float64
- func (limiter *ClusterLimiter) Reward(v float64)
- func (limiter *ClusterLimiter) ScoreCut() (bool, float64)
- func (limiter *ClusterLimiter) SetRewardTarget(target float64)
- func (limiter *ClusterLimiter) Take(v float64) bool
- func (limiter *ClusterLimiter) TakeWithScore(v float64, score float64) bool
- type ClusterLimiterFactory
- func (factory *ClusterLimiterFactory) AllLimiters() []*ClusterLimiter
- func (factory *ClusterLimiterFactory) AllOptions() []*ClusterLimiterOpts
- func (factory *ClusterLimiterFactory) Delete(name string)
- func (factory *ClusterLimiterFactory) GetClusterLimiter(name string) *ClusterLimiter
- func (factory *ClusterLimiterFactory) Heartbeat()
- func (factory *ClusterLimiterFactory) LoadFile(filePath string) error
- func (factory *ClusterLimiterFactory) LoadOptions(options []*ClusterLimiterOpts) error
- func (factory *ClusterLimiterFactory) NewClusterLimiter(opts *ClusterLimiterOpts) (*ClusterLimiter, error)
- func (factory *ClusterLimiterFactory) Start()
- func (factory *ClusterLimiterFactory) Stop()
- func (factory *ClusterLimiterFactory) WatchAndSync()
- type ClusterLimiterFactoryOpts
- type ClusterLimiterOpts
- type ReporterI
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) GetRewardTarget ¶
func (limiter *ClusterLimiter) GetRewardTarget() float64
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) ScoreCut ¶
func (limiter *ClusterLimiter) ScoreCut() (bool, float64)
score discrimination threshold for TakeWithScore
func (*ClusterLimiter) SetRewardTarget ¶
func (limiter *ClusterLimiter) SetRewardTarget(target float64)
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 ¶
func NewFactory(opts *ClusterLimiterFactoryOpts) *ClusterLimiterFactory
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) 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
Click to show internal directories.
Click to hide internal directories.