Documentation ¶
Index ¶
- Constants
- func CookieForDimmingDecision(decision bool) *fasthttp.Cookie
- func CookieForPriority(priority Priority) *fasthttp.Cookie
- func HasDimmingDecisionCookie(request *fasthttp.Request) bool
- func ReadDimmingDecisionCookie(request *fasthttp.Request) bool
- func RequestHasPriorityCookie(request *fasthttp.Request) bool
- func RequestHasPriorityLowOrHighCookie(request *fasthttp.Request) bool
- type InfluxDBRequestWriter
- type Priority
- type PriorityFetcher
- type ProfiledRequestAggregator
- type Profiler
- type RedisPriorityFetcher
- type RequestWriter
Constants ¶
View Source
const ( Unknown Priority = 0 Low = 1 High = 2 )
View Source
const RedisQueueName = "sessions"
View Source
const RedisQueueTag = "profiler service"
Variables ¶
This section is empty.
Functions ¶
func CookieForPriority ¶
Types ¶
type InfluxDBRequestWriter ¶
type InfluxDBRequestWriter struct {
// contains filtered or unexported fields
}
func NewInfluxDBRequestWriter ¶
func NewInfluxDBRequestWriter(addr, authToken, org, bucket string) *InfluxDBRequestWriter
type PriorityFetcher ¶
type ProfiledRequestAggregator ¶
type ProfiledRequestAggregator struct {
// contains filtered or unexported fields
}
ProfiledRequestAggregator captures data used to ensure high priority requests are dimmed when low priority requests are exhausted and vice-versa. The aggregator is implemented using atomic integers such that overhead added to requests is reduced. The counters decay over time to approximate a sliding window of requests without having to store the timestamps of requests.
func NewProfiledRequestAggregator ¶
func NewProfiledRequestAggregator() *ProfiledRequestAggregator
func (*ProfiledRequestAggregator) GetHighPriorityVisits ¶
func (a *ProfiledRequestAggregator) GetHighPriorityVisits() int32
func (*ProfiledRequestAggregator) GetLowPriorityVisits ¶
func (a *ProfiledRequestAggregator) GetLowPriorityVisits() int32
func (*ProfiledRequestAggregator) MarkHighPriorityVisit ¶
func (a *ProfiledRequestAggregator) MarkHighPriorityVisit()
func (*ProfiledRequestAggregator) MarkLowPriorityVisit ¶
func (a *ProfiledRequestAggregator) MarkLowPriorityVisit()
type Profiler ¶
type Profiler struct { Priorities PriorityFetcher Requests RequestWriter Aggregator *ProfiledRequestAggregator LowPriorityDimmingProbability float64 LowPriorityDimmingProbabilityMultiplier float64 HighPriorityDimmingProbability float64 HighPriorityDimmingProbabilityMultiplier float64 }
func (*Profiler) DimmingDecisionProbabilityForPriorityCookie ¶
func (*Profiler) MarkProfiledRequestByPriorityCookie ¶
type RedisPriorityFetcher ¶
type RedisPriorityFetcher struct {
// contains filtered or unexported fields
}
func NewRedisPriorityFetcher ¶
func (*RedisPriorityFetcher) Fetch ¶
func (f *RedisPriorityFetcher) Fetch(sessionID string) (Priority, error)
func (*RedisPriorityFetcher) Profile ¶
func (f *RedisPriorityFetcher) Profile(sessionID string)
type RequestWriter ¶
Click to show internal directories.
Click to hide internal directories.