Documentation ¶
Overview ¶
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: Apache-2.0
Package sd defines some interfaces and implementations for service discovery
SPDX-License-Identifier: Apache-2.0
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrNoHosts = errors.New("no hosts available")
ErrNoHosts is the error the balancer must return when there are 0 hosts ready
Functions ¶
func RegisterSubscriberFactory ¶
func RegisterSubscriberFactory(name string, sf SubscriberFactory) error
RegisterSubscriberFactory registers the received factory Deprecated: RegisterSubscriberFactory. Use the GetRegister function
Types ¶
type Balancer ¶
Balancer applies a balancing stategy in order to select the backend host to be used
func NewBalancer ¶ added in v1.4.2
func NewBalancer(subscriber Subscriber) Balancer
NewBalancer returns the best perfomant balancer depending on the number of available processors. If GOMAXPROCS = 1, it returns a round robin LB due there is no contention over the atomic counter. If GOMAXPROCS > 1, it returns a pseudo random LB optimized for scaling over the number of CPUs.
func NewRandomLB ¶
func NewRandomLB(subscriber Subscriber) Balancer
NewRandomLB returns a new balancer using a fastrand pseudorandom generator
func NewRoundRobinLB ¶
func NewRoundRobinLB(subscriber Subscriber) Balancer
NewRoundRobinLB returns a new balancer using a round robin strategy
type FixedSubscriber ¶
type FixedSubscriber []string
FixedSubscriber has a constant set of backend hosts and they never get updated
func (FixedSubscriber) Hosts ¶
func (s FixedSubscriber) Hosts() ([]string, error)
Hosts implements the subscriber interface
type Register ¶
type Register struct {
// contains filtered or unexported fields
}
Register is a SD register
func (*Register) Get ¶
func (r *Register) Get(name string) SubscriberFactory
Get implements the RegisterGetter interface
type Subscriber ¶
Subscriber keeps the set of backend hosts up to date
func FixedSubscriberFactory ¶
func FixedSubscriberFactory(cfg *config.Backend) Subscriber
FixedSubscriberFactory builds a FixedSubscriber with the received config
func GetSubscriber ¶
func GetSubscriber(cfg *config.Backend) Subscriber
GetSubscriber returns a subscriber from package register Deprecated: GetSubscriber. Use the GetRegister function
type SubscriberFactory ¶
type SubscriberFactory func(*config.Backend) Subscriber
SubscriberFactory builds subscribers with the received config
type SubscriberFunc ¶
SubscriberFunc type is an adapter to allow the use of ordinary functions as subscribers. If f is a function with the appropriate signature, SubscriberFunc(f) is a Subscriber that calls f.
func (SubscriberFunc) Hosts ¶
func (f SubscriberFunc) Hosts() ([]string, error)
Hosts implements the Subscriber interface by executing the wrapped function