Documentation ¶
Overview ¶
Package resolver provides a discovery-based resolver for VTAdmin clusters.
It uses a discovery.Discovery implementation to dynamically update the set of vtctlds and vtgates in a cluster being used by a grpc.ClientConn, allowing VTAdmin to transparently reconnect to different vtctlds and vtgates both periodically and when hosts are recycled.
Some potential improvements we can add, if desired:
1. Stats!
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BalancerPolicy ¶
type BalancerPolicy string
BalancerPolicy is an enum for different grpc load balancer policies. It also implements the pflag.Value interface to be used as a flagset Var destination.
const ( // PickFirstBalancer PickFirstBalancer BalancerPolicy = "pick_first" RoundRobinBalancer BalancerPolicy = "round_robin" )
func (*BalancerPolicy) Set ¶
func (bp *BalancerPolicy) Set(s string) error
Set is part of the pflag.Value interface.
func (*BalancerPolicy) String ¶
func (bp *BalancerPolicy) String() string
String is part of the pflag.Value interface.
func (*BalancerPolicy) Type ¶
func (*BalancerPolicy) Type() string
Type is part of the pflag.Value interface.
type Options ¶
type Options struct { // Discovery is the discovery implementation used to discover host addresses // when the ClientConn requests an update from the resolver. Discovery discovery.Discovery DiscoveryTags []string DiscoveryTimeout time.Duration // MinDiscoveryInterval is the minimum amount of time to wait before re- // discovering after a successful discovery resolution. This is useful to // avoid spamming the backing discovery service if multiple ResolveNow calls // are made in rapid succession. // // Note that the interval for failed discovery resolutions are governed by // the backoff strategy and configuration, not this field. MinDiscoveryInterval time.Duration // BackoffStrategy specfies the strategy to use when backing off of failed // discovery resolution. Permitted values are "exponential", "linear", and // "none"; the empty string defaults to "exponential". BackoffStrategy string // BackoffConfig is the configuration used by the given backoff strategy. // For a "none" strategy, this is ignored. BackoffConfig grpcbackoff.Config // BalancerPolicy, if set, will cause a resolver to provide a ServiceConfig // to the resolver's ClientConn with a corresponding loadBalancingConfig. // Omitting this option will cause grpc to use its default load balacing // policy, which is currently pick_first. // // For more details, see https://github.com/grpc/grpc/blob/master/doc/service_config.md. BalancerPolicy BalancerPolicy }
Options defines the configuration options that can produce a resolver.Builder.
A builder may be produced directly from an Options struct, but the intended usage is to first initialize an Options struct via opts.InstallFlags, which ensures the Options have sensible defaults and both vtctldclient proxy and VTGateProxy do.
func (*Options) InstallFlags ¶
InstallFlags installs the resolver.Options flags on the given flagset. It is used by both vtsql and vtctldclient proxies.
func (*Options) NewBuilder ¶
func (opts *Options) NewBuilder(scheme string) grpcresolver.Builder
NewBuilder returns a gRPC resolver.Builder for the given scheme. For vtadmin, the scheme should be a cluster ID.
The target provided to Builder.Build will be used to switch on vtctld or vtgate, based on the URL.Host field of the parsed dial target. This means that the addr passed to Dial should have the form "{clusterID}://{vtctld|vtgate}/". Other target URL hosts will cause an error. To ensure the dial address conforms to this constraint, use this package's DialAddr function.