route

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: May 19, 2016 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetMatcher added in v1.1.3

func SetMatcher(s string) error

SetMatcher sets the matcher function for the proxy.

func SetPickerStrategy

func SetPickerStrategy(s string) error

SetPickerStrategy sets the picker function for the proxy.

func SetTable

func SetTable(t Table)

SetTable sets the active routing table. A nil value logs a warning and is ignored. The function is safe to be called from multiple goroutines.

Types

type Route added in v1.0.6

type Route struct {
	// Host contains the host of the route.
	// not used for routing but for config generation
	// Table has a map with the host as key
	// for faster lookup and smaller search space.
	Host string

	// Path is the path prefix from a request uri
	Path string

	// Targets contains the list of URLs
	Targets []*Target
	// contains filtered or unexported fields
}

Route maps a path prefix to one or more target URLs. routes can have a share value which describes the amount of traffic this route should get. You can specify that a route should get a fixed percentage of the traffic independent of how many instances are running.

func (*Route) TargetConfig added in v1.0.6

func (r *Route) TargetConfig(t *Target, addWeight bool) string

type Routes added in v1.0.6

type Routes []*Route

Routes stores a list of routes usually for a single host.

func (Routes) Len added in v1.0.6

func (rt Routes) Len() int

sort by path in reverse order (most to least specific)

func (Routes) Less added in v1.0.6

func (rt Routes) Less(i, j int) bool

func (Routes) Swap added in v1.0.6

func (rt Routes) Swap(i, j int)

type Table

type Table map[string]Routes

Table contains a set of routes grouped by host. The host routes are sorted from most to least specific by sorting the routes in reverse order by path.

func GetTable

func GetTable() Table

GetTable returns the active routing table. The function is safe to be called from multiple goroutines and the value is never nil.

func Parse

func Parse(r io.Reader) (Table, error)

Parse loads a routing table from a set of route commands.

The commands are parsed in order and order matters. Deleting a route that has not been created yet yields a different result than the other way around.

Route commands can have the following form:

route add <svc> <src> <dst> weight <w> tags "<t1>,<t2>,..."

  • Add route for service svc from src to dst and assign weight and tags

route add <svc> <src> <dst> weight <w>

  • Add route for service svc from src to dst and assign weight

route add <svc> <src> <dst> tags "<t1>,<t2>,..."

  • Add route for service svc from src to dst and assign tags

route add <svc> <src> <dst>

  • Add route for service svc from src to dst

route del <svc> <src> <dst>

  • Remove route matching svc, src and dst

route del <svc> <src>

  • Remove all routes of services matching svc and src

route del <svc>

  • Remove all routes of service matching svc

route weight <svc> <src> weight <w> tags "<t1>,<t2>,..."

  • Route w% of traffic to all services matching svc, src and tags

route weight <src> weight <w> tags "<t1>,<t2>,..."

  • Route w% of traffic to all services matching src and tags

route weight <svc> <src> weight <w>

  • Route w% of traffic to all services matching svc and src

route weight service host/path weight w tags "tag1,tag2"

  • Route w% of traffic to all services matching service, host/path and tags

    w is a float > 0 describing a percentage, e.g. 0.5 == 50% w <= 0: means no fixed weighting. Traffic is evenly distributed w > 0: route will receive n% of traffic. If sum(w) > 1 then w is normalized. sum(w) >= 1: only matching services will receive traffic

    Note that the total sum of traffic sent to all matching routes is w%.

func ParseFile

func ParseFile(path string) (Table, error)

ParseFile loads a routing table from a file.

func ParseString

func ParseString(s string) (Table, error)

ParseString loads a routing table from a string.

func (Table) AddRoute

func (t Table) AddRoute(service, prefix, target string, weight float64, tags []string) error

AddRoute adds a new route prefix -> target for the given service.

func (Table) AddRouteWeight

func (t Table) AddRouteWeight(service, prefix string, weight float64, tags []string) error

func (Table) Config

func (t Table) Config(addWeight bool) []string

func (Table) DelRoute

func (t Table) DelRoute(service, prefix, target string) error

DelRoute removes one or more routes depending on the arguments. If service, prefix and target are provided then only this route is removed. Are only service and prefix provided then all routes for this service and prefix are removed. This removes all active instances of the service from the route. If only the service is provided then all routes for this service are removed. The service will no longer receive traffic. Routes with no targets are removed.

func (Table) Lookup added in v1.0.5

func (t Table) Lookup(req *http.Request, trace string) *Target

Lookup finds a target url based on the current matcher and picker or nil if there is none. It first checks the routes for the host and if none matches then it falls back to generic routes without a host. This is useful for a catch-all '/' rule.

func (Table) String

func (t Table) String() string

String returns the routing table as config file which can be read by Parse() again.

type Target added in v1.0.5

type Target struct {
	// Service is the name of the service the targetURL points to
	Service string

	// Tags are the list of tags for this target
	Tags []string

	// URL is the endpoint the service instance listens on
	URL *url.URL

	// FixedWeight is the weight assigned to this target.
	// If the value is 0 the targets weight is dynamic.
	FixedWeight float64

	// Weight is the actual weight for this service in percent.
	Weight float64

	// Timer measures throughput and latency of this target
	Timer gometrics.Timer
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

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