router

package
v1.5.8-rc1 Latest Latest
Warning

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

Go to latest
Published: Feb 8, 2022 License: Apache-2.0 Imports: 3 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddrMetadata added in v1.5.5

type AddrMetadata interface {
	// Source indicates where the metadata comes from.
	Source() string
}

AddrMetadta is address metadata, collected from a snapshot of address list by a router, if it implements Poolable.

type AddrPool added in v1.5.5

type AddrPool map[string]*roaring.Bitmap

AddrPool is an address pool, backed by a snapshot of address list, divided into categories.

type BaseRouterRule added in v1.4.0

type BaseRouterRule struct {
	RawRule  string
	Runtime  bool
	Force    bool
	Valid    bool
	Enabled  bool
	Priority int
	Dynamic  bool
	Scope    string
	Key      string
}

BaseRouterRule

type Cache added in v1.5.5

type Cache interface {
	// GetInvokers returns the snapshot of received invokers.
	GetInvokers() []protocol.Invoker

	// FindAddrPool returns address pool associated with the given Poolable instance.
	FindAddrPool(Poolable) AddrPool

	// FindAddrMeta returns address metadata associated with the given Poolable instance.
	FindAddrMeta(Poolable) AddrMetadata
}

Cache caches all addresses relevant info for a snapshot of received invokers. It keeps a snapshot of the received address list, and also keeps address pools and address metadata from routers based on the same address snapshot, if the router implements Poolable.

type Chain added in v1.4.0

type Chain interface {
	Route(*common.URL, protocol.Invocation) []protocol.Invoker
	// Refresh invokers
	SetInvokers([]protocol.Invoker)
	// AddRouters Add routers
	AddRouters([]PriorityRouter)
	// GetNotifyChan get notify channel of this chain
	GetNotifyChan() chan struct{}
	// Detect Route State
	DetectRoute() (RouteSnapshot, error)
	// listens on events to update the address cache
	Loop()
}

Chain

type FilePriorityRouterFactory added in v1.5.0

type FilePriorityRouterFactory interface {
	// NewFileRouters Create file router with config file
	NewFileRouter([]byte) (PriorityRouter, error)
}

FilePriorityRouterFactory creates priority router with parse config file

type HealthChecker added in v1.4.0

type HealthChecker interface {
	// IsHealthy evaluates the healthy state on the given Invoker
	IsHealthy(invoker protocol.Invoker) bool
}

HealthChecker is used to determine whether the invoker is healthy or not

type Poolable added in v1.5.5

type Poolable interface {
	// Pool created address pool and address metadata from the invokers.
	Pool([]protocol.Invoker) (AddrPool, AddrMetadata)

	// ShouldPool returns if it should pool. One typical scenario is a router rule changes, in this case, a pooling
	// is necessary, even if the addresses not changed at all.
	ShouldPool() bool

	// Name return the Poolable's name.
	Name() string
}

Poolable caches address pool and address metadata for a router instance which will be used later in Router's Route.

type PriorityRouter added in v1.5.0

type PriorityRouter interface {

	// Priority Return Priority in router
	// 0 to ^int(0) is better
	Priority() int64
	// contains filtered or unexported methods
}

Router

type PriorityRouterDetecter added in v1.5.7

type PriorityRouterDetecter interface {
	RouteSnapshot(cache Cache) string
}

PriorityRouterDetecter detect the router

type PriorityRouterFactory added in v1.5.0

type PriorityRouterFactory interface {
	// NewPriorityRouter creates router instance with URL
	NewPriorityRouter(*common.URL, chan struct{}) (PriorityRouter, error)
}

Extension - Router PriorityRouterFactory creates creates priority router with url

type RouteSnapshot added in v1.5.7

type RouteSnapshot struct {
	Invokers       []protocol.Invoker
	RouteSnapshots []string
}

RouteSnapshot is the snapshot of Route

func (*RouteSnapshot) AddRouteSnapshot added in v1.5.7

func (rs *RouteSnapshot) AddRouteSnapshot(msg string)

nolint

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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