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 ¶
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