selector

package
v0.13.3 Latest Latest
Warning

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

Go to latest
Published: Oct 14, 2021 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AvailableSeconds = 5
)

Variables

View Source
var (
	ErrNoAvailableNodes           = errors.New("could not find any available nodes")
	ErrCurrentRegionNotSet        = errors.New("current region cannot be blank")
	ErrCurrentRegionUnknownLatLon = errors.New("unknown lat and lon for the current region")
)

Functions

func GetAvailableNodes

func GetAvailableNodes(nodes []*livekit.Node) []*livekit.Node

func IsAvailable

func IsAvailable(node *livekit.Node) bool

checks if a node has been updated recently to be considered for selection

Types

type RandomSelector

type RandomSelector struct {
}

RandomSelector selects an available node at random

func (*RandomSelector) SelectNode

func (s *RandomSelector) SelectNode(nodes []*livekit.Node, room *livekit.Room) (*livekit.Node, error)

type RegionAwareSelector

type RegionAwareSelector struct {
	SystemLoadSelector
	CurrentRegion string
	// contains filtered or unexported fields
}

RegionAwareSelector prefers available nodes that are closest to the region of the current instance

func NewRegionAwareSelector

func NewRegionAwareSelector(currentRegion string, regions []RegionConfig) (*RegionAwareSelector, error)

func (*RegionAwareSelector) SelectNode

func (s *RegionAwareSelector) SelectNode(nodes []*livekit.Node, room *livekit.Room) (*livekit.Node, error)

type RegionConfig

type RegionConfig struct {
	Name string  `yaml:"name"`
	Lat  float64 `yaml:"lat"`
	Lon  float64 `yaml:"lon"`
}

RegionConfig lists available regions and their latitude/longitude, so the selector would prefer regions that are closer

type SystemLoadSelector

type SystemLoadSelector struct {
	SysloadLimit float32
}

SystemLoadSelector eliminates nodes that surpass has a per-cpu node higher than SysloadLimit then selects a node randomly from nodes that are not overloaded

func (*SystemLoadSelector) SelectNode

func (s *SystemLoadSelector) SelectNode(nodes []*livekit.Node, room *livekit.Room) (*livekit.Node, error)

Jump to

Keyboard shortcuts

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