utils

package
v0.0.8 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2018 License: MIT Imports: 4 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func TimeIntervalFileName

func TimeIntervalFileName(interval int) string

Types

type W1

type W1 struct {
	// contains filtered or unexported fields
}

W1 is struct that contains weighted servers and provides methods to select a weighted server. It is used for the smooth weighted round-robin balancing algorithm. This algorithm is implemented in Nginx: https://github.com/phusion/nginx/commit/27e94984486058d73157038f7950a0a36ecc6e35.

Algorithm is as follows: on each peer selection we increase current_weight of each eligible peer by its weight, select peer with greatest current_weight and reduce its current_weight by total number of weight points distributed among peers.

In case of { 5, 1, 1 } weights this gives the following sequence of current_weight's: (a, a, b, a, c, a, a)

func (*W1) Add

func (w *W1) Add(server interface{}, weight int)

Add a weighted server.

func (*W1) Next

func (w *W1) Next() interface{}

Next returns next selected server.

func (*W1) NextWeighted

func (w *W1) NextWeighted() *Weighted1

NextWeighted returns next selected weighted object.

func (*W1) RemoveAll

func (w *W1) RemoveAll()

RemoveAll removes all weighted servers.

func (*W1) Reset

func (w *W1) Reset()

Reset resets all current weights.

type Weighted1

type Weighted1 struct {
	Server          interface{}
	Weight          int
	CurrentWeight   int
	EffectiveWeight int
}

Weighted1 is a wrapped server with weight

func (*Weighted1) Fail

func (w *Weighted1) Fail()

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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