tieredhashing

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Sep 13, 2023 License: Apache-2.0, MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PLatency                    = 90
	PMaxLatencyWithoutWindowing = 100

	// main tier has the top `maxMainTierSize` nodes
	TierMain    = Tier("main")
	TierUnknown = Tier("unknown")
)

TODO Make env vars for tuning

Variables

This section is empty.

Functions

This section is empty.

Types

type NodeInfo added in v0.0.3

type NodeInfo struct {
	ID            string  `json:"id"`
	IP            string  `json:"ip"`
	Distance      float32 `json:"distance"`
	Weight        int     `json:"weight"`
	ComplianceCid string  `json:"complianceCid"`
	Core          bool    `json:"core"`
}

type NodePerf

type NodePerf struct {
	LatencyDigest  *rolling.PointPolicy
	NLatencyDigest float64

	CorrectnessDigest  *rolling.PointPolicy
	NCorrectnessDigest float64

	Tier

	// Node Info
	NodeInfo
	// contains filtered or unexported fields
}

type Option

type Option func(config *TieredHashingConfig)

func WithAlwaysMainFirst

func WithAlwaysMainFirst() Option

func WithCorrectnessThreshold added in v0.0.4

func WithCorrectnessThreshold(pct float64) Option

func WithCorrectnessWindowSize

func WithCorrectnessWindowSize(n int) Option

func WithFailureDebounce

func WithFailureDebounce(n time.Duration) Option

func WithLatencyWindowSize

func WithLatencyWindowSize(n int) Option

func WithMaxMainTierSize

func WithMaxMainTierSize(n int) Option

func WithMaxPoolSize

func WithMaxPoolSize(n int) Option

func WithNoRemove added in v0.0.2

func WithNoRemove(noRemove bool) Option

type PoolMetrics

type PoolMetrics struct {
	Unknown int
	Main    int
	Total   int
}

type RemovedNode

type RemovedNode struct {
	Node string
	Tier
	Reason              string
	ConnErrors          int
	NetworkErrors       int
	ResponseCodes       int
	MainToUnknownChange int
	UnknownToMainChange int
	ResponseCodesMap    map[int]int
}

type ResponseMetrics

type ResponseMetrics struct {
	ConnFailure  bool
	NetworkError bool
	ResponseCode int

	Success bool

	TTFBMs     float64
	SpeedPerMs float64
}

type Tier added in v0.0.2

type Tier string

type TieredHashing

type TieredHashing struct {
	StartAt time.Time

	OverAllCorrectnessDigest  *rolling.PointPolicy
	NOverAllCorrectnessDigest float64
	AverageCorrectnessPct     float64

	LastAverageCalcAt time.Time
	// contains filtered or unexported fields
}

locking is left to the caller

func New

func New(opts ...Option) *TieredHashing

func (*TieredHashing) AddOrchestratorNodes

func (t *TieredHashing) AddOrchestratorNodes(nodes []NodeInfo) (added, alreadyRemoved, removedAndAddedBack int)

func (*TieredHashing) DoRefresh

func (t *TieredHashing) DoRefresh() bool

func (*TieredHashing) GetComplianceCid added in v0.0.3

func (t *TieredHashing) GetComplianceCid(ip string) (string, error)

func (*TieredHashing) GetNodes

func (t *TieredHashing) GetNodes(from Tier, key string, n int) []string

func (*TieredHashing) GetPerf

func (t *TieredHashing) GetPerf() map[string]*NodePerf

func (*TieredHashing) GetPoolMetrics

func (t *TieredHashing) GetPoolMetrics() PoolMetrics

func (*TieredHashing) IsCore added in v0.0.7

func (t *TieredHashing) IsCore(n string) bool

func (*TieredHashing) IsInitDone

func (t *TieredHashing) IsInitDone() bool

func (*TieredHashing) MoveBestUnknownToMain added in v0.0.2

func (t *TieredHashing) MoveBestUnknownToMain() int

func (*TieredHashing) NodeTier added in v0.0.2

func (t *TieredHashing) NodeTier(node string) Tier

func (*TieredHashing) RecordFailure

func (t *TieredHashing) RecordFailure(node string, rm ResponseMetrics) *RemovedNode

func (*TieredHashing) RecordSuccess

func (t *TieredHashing) RecordSuccess(node string, rm ResponseMetrics)

func (*TieredHashing) UpdateAverageCorrectnessPct added in v0.0.4

func (t *TieredHashing) UpdateAverageCorrectnessPct()

func (*TieredHashing) UpdateMainTierWithTopN

func (t *TieredHashing) UpdateMainTierWithTopN() (mainToUnknown, unknownToMain int)

type TieredHashingConfig

type TieredHashingConfig struct {
	MaxPoolSize           int
	AlwaysMainFirst       bool
	FailureDebounce       time.Duration
	LatencyWindowSize     int
	CorrectnessWindowSize int
	MaxMainTierSize       int
	NoRemove              bool
	CorrectnessThreshold  float64
}

Jump to

Keyboard shortcuts

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