Documentation ¶
Index ¶
- func TargetHostMatches(target BalancerTarget, hosts string) bool
- func TargetPIDMatches(target BalancerTarget) bool
- type BalancerOption
- type BalancerOptions
- type BalancerTarget
- type BalancerTargetFilter
- type ClientConfig
- type ClusterConfig
- type LBStrategy
- type ResolverCallback
- type ServerAttributes
- type UpdateStateCallback
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func TargetHostMatches ¶
func TargetHostMatches(target BalancerTarget, hosts string) bool
TargetHostMatches checks target.Address host against the passed string. hosts string is a pipe-separated list of hostname or IPs.
func TargetPIDMatches ¶
func TargetPIDMatches(target BalancerTarget) bool
TargetPIDMatches is a generic matcher for PID
Types ¶
type BalancerOption ¶
type BalancerOption func(o *BalancerOptions)
func WithPriorityToLocal ¶
func WithPriorityToLocal() BalancerOption
WithPriorityToLocal provides a BalancerOption to prioritize connections to local host.
func WithPriorityToProcess ¶
func WithPriorityToProcess() BalancerOption
WithPriorityToProcess is mainly for testing purpopse, to prioritize connections to current process.
func WithRestrictToLocal ¶
func WithRestrictToLocal() BalancerOption
WithRestrictToLocal provides a BalancerOption to forbid connection to hosts other than local.
func WithRestrictToProcess ¶
func WithRestrictToProcess() BalancerOption
WithRestrictToProcess is mainly for testing purpose, forbidding connection to other processes
type BalancerOptions ¶
type BalancerOptions struct { // Filters is a list of filters that will reduce the possible list of targets Filters []BalancerTargetFilter // Priority is a list of filters that will be tested first. If no target match, the load balancer // continues to the non-matching values Priority []BalancerTargetFilter }
BalancerOptions holds internal load balancer strategies
type BalancerTarget ¶
type BalancerTarget interface { // Address must return the target address. It can include a port Address() string // Attributes returns a set of grpc.Attributes Attributes() *attributes.Attributes }
BalancerTarget is a load balancer target providing its own internal info
type BalancerTargetFilter ¶
type BalancerTargetFilter func(BalancerTarget) bool
BalancerTargetFilter is a generic signature for matching a BalancerTarget against specific condition.
type ClientConfig ¶
type ClientConfig struct {
LBStrategies []*LBStrategy `json:"loadBalancingStrategies,omitempty"`
}
ClientConfig holds configuration for a specific client (http or grpc)
func (ClientConfig) LBOptions ¶
func (c ClientConfig) LBOptions() (oo []BalancerOption)
LBOptions converts LBStrategies to a slice of BalancerOption
type ClusterConfig ¶
type ClusterConfig struct {
Clients map[string]ClientConfig `json:"clients"`
}
ClusterConfig holds configuration for cluster
func (ClusterConfig) GetClientConfig ¶
func (c ClusterConfig) GetClientConfig(name string) ClientConfig
GetClientConfig returns ClientConfig for a specific client (either grpc or http)
type LBStrategy ¶
type LBStrategy struct { Name string `json:"name"` Config map[string]interface{} `json:"config,omitempty"` }
LBStrategy holds LoadBalancer strategies for a given client
type ResolverCallback ¶
type ResolverCallback interface { Add(UpdateStateCallback) Stop() }
ResolverCallback is a generic watcher for registry, that rebuilds the list of available targets and calls the passed callbacks on change event. It is used by both grpc and http balancers.
func NewResolverCallback ¶
func NewResolverCallback(reg registry.Registry) (ResolverCallback, error)
NewResolverCallback creates a new ResolverCallback watching the passed registry.Registry
type ServerAttributes ¶
type ServerAttributes struct { Name string Addresses []string Services []string Endpoints []string BalancerAttributes *attributes.Attributes }
type UpdateStateCallback ¶
type UpdateStateCallback func(map[string]*ServerAttributes) error