router

package
v3.1.0-rc1 Latest Latest
Warning

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

Go to latest
Published: Jul 17, 2023 License: Apache-2.0 Imports: 3 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AddrMetadata

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

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

type AddrPool

type AddrPool map[string]*roaring.Bitmap

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

type Cache

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

type Chain interface {
	Route(*common.URL, protocol.Invocation) []protocol.Invoker
	// Refresh invokers
	SetInvokers([]protocol.Invoker)
	// AddRouters Add routers
	AddRouters([]PriorityRouter)
}

type Poolable

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

type PriorityRouter interface {
	// Route Determine the target invokers list.
	Route([]protocol.Invoker, *common.URL, protocol.Invocation) []protocol.Invoker

	// URL Return URL in router
	URL() *common.URL

	// Priority Return Priority in router
	// 0 to ^int(0) is better
	Priority() int64

	// Notify the router the invoker list
	Notify(invokers []protocol.Invoker)
}

PriorityRouter routes with priority

type PriorityRouterFactory

type PriorityRouterFactory interface {
	// NewPriorityRouter creates router instance with URL
	NewPriorityRouter() (PriorityRouter, error)
}

PriorityRouterFactory creates priority router with url

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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