Involved Source Files
Package resolver defines APIs for name resolution in gRPC.
All APIs in this package are experimental.
Package-Level Type Names (total 9, all are exported)
/* sort exporteds by: | */
Address represents a server the client connects to.
This is the EXPERIMENTAL API and may be changed or extended in the future.
Addr is the server address on which a connection will be established.
Attributes contains arbitrary data about this address intended for
consumption by the load balancing policy.
Metadata is the information associated with Addr, which may be used
to make load balancing decision.
Deprecated: use Attributes instead.
ServerName is the name of this address.
If non-empty, the ServerName is used as the transport certification authority for
the address, instead of the hostname from the Dial target string. In most cases,
this should not be set.
If Type is GRPCLB, ServerName should be the name of the remote load
balancer, not the name of the backend.
WARNING: ServerName must only be populated with trusted values. It
is insecure to populate it with data from untrusted inputs since untrusted
values could be used to bypass the authority checks performed by TLS.
Type is the type of this address.
Deprecated: use Attributes instead.
func ClientConn.NewAddress(addresses []Address)
func google.golang.org/grpc/balancer.ClientConn.NewSubConn([]Address, balancer.NewSubConnOptions) (balancer.SubConn, error)
func google.golang.org/grpc/balancer.SubConn.UpdateAddresses([]Address)
func google.golang.org/grpc/internal/transport.NewClientTransport(connectCtx, ctx context.Context, addr Address, opts transport.ConnectOptions, onPrefaceReceipt func(), onGoAway func(transport.GoAwayReason), onClose func()) (transport.ClientTransport, error)
func google.golang.org/grpc.(*ClientConn).applyServiceConfigAndBalancer(sc *grpc.ServiceConfig, addrs []Address)
func google.golang.org/grpc.(*ClientConn).maybeApplyDefaultServiceConfig(addrs []Address)
func google.golang.org/grpc.(*ClientConn).newAddrConn(addrs []Address, opts balancer.NewSubConnOptions) (*grpc.addrConn, error)
func google.golang.org/grpc/internal/transport.newHTTP2Client(connectCtx, ctx context.Context, addr Address, opts transport.ConnectOptions, onPrefaceReceipt func(), onGoAway func(transport.GoAwayReason), onClose func()) (_ *transport.http2Client, err error)
AddressType indicates the address type returned by name resolution.
Deprecated: use Attributes in Address instead.
const Backend
const GRPCLB
Builder creates a resolver that will be used to watch name resolution updates.
Build creates a new resolver for the given target.
gRPC dial calls Build synchronously, and fails if the returned error is
not nil.
Scheme returns the scheme supported by this resolver.
Scheme is defined at https://github.com/grpc/grpc/blob/master/doc/naming.md.
*google.golang.org/grpc/balancer/grpclb.lbManualResolver
*google.golang.org/grpc/internal/resolver/dns.dnsBuilder
*google.golang.org/grpc/internal/resolver/passthrough.passthroughBuilder
func Get(scheme string) Builder
func google.golang.org/grpc/internal/resolver/dns.NewBuilder() Builder
func google.golang.org/grpc.(*ClientConn).getResolver(scheme string) Builder
func Register(b Builder)
func google.golang.org/grpc.WithResolvers(rs ...Builder) grpc.DialOption
func google.golang.org/grpc.newCCResolverWrapper(cc *grpc.ClientConn, rb Builder) (*grpc.ccResolverWrapper, error)
BuildOptions includes additional information for the builder to create
the resolver.
CredsBundle is the credentials bundle used by the ClientConn for
communicating with the target gRPC service (set via
WithCredentialsBundle). In cases where a name resolution service
requires the same credentials, the resolver may use this field. In most
cases though, it is not appropriate, and this field may be ignored.
DialCreds is the transport credentials used by the ClientConn for
communicating with the target gRPC service (set via
WithTransportCredentials). In cases where a name resolution service
requires the same credentials, the resolver may use this field. In most
cases though, it is not appropriate, and this field may be ignored.
Dialer is the custom dialer used by the ClientConn for dialling the
target gRPC service (set via WithDialer). In cases where a name
resolution service requires the same dialer, the resolver may use this
field. In most cases though, it is not appropriate, and this field may
be ignored.
DisableServiceConfig indicates whether a resolver implementation should
fetch service config data.
func Builder.Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)
ClientConn contains the callbacks for resolver to notify any updates
to the gRPC ClientConn.
This interface is to be implemented by gRPC. Users should not need a
brand new implementation of this interface. For the situations like
testing, the new implementation should embed this interface. This allows
gRPC to add new methods to this interface.
NewAddress is called by resolver to notify ClientConn a new list
of resolved addresses.
The address list should be the complete list of resolved addresses.
Deprecated: Use UpdateState instead.
NewServiceConfig is called by resolver to notify ClientConn a new
service config. The service config should be provided as a json string.
Deprecated: Use UpdateState instead.
ParseServiceConfig parses the provided service config and returns an
object that provides the parsed config.
ReportError notifies the ClientConn that the Resolver encountered an
error. The ClientConn will notify the load balancer and begin calling
ResolveNow on the Resolver with exponential backoff.
UpdateState updates the state of the ClientConn appropriately.
*google.golang.org/grpc.ccResolverWrapper
func Builder.Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)
ResolveNowOptions includes additional information for ResolveNow.
func Resolver.ResolveNow(ResolveNowOptions)
func google.golang.org/grpc/balancer.ClientConn.ResolveNow(ResolveNowOptions)
func google.golang.org/grpc.(*ClientConn).resolveNow(o ResolveNowOptions)
Resolver watches for the updates on the specified target.
Updates include address updates and service config updates.
Close closes the resolver.
ResolveNow will be called by gRPC to try to resolve the target name
again. It's just a hint, resolver can ignore this if it's not necessary.
It could be called multiple times concurrently.
*google.golang.org/grpc/balancer/grpclb.lbManualResolver
google.golang.org/grpc/internal/resolver/dns.deadResolver
*google.golang.org/grpc/internal/resolver/dns.dnsResolver
*google.golang.org/grpc/internal/resolver/passthrough.passthroughResolver
func Builder.Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)
State contains the current Resolver state relevant to the ClientConn.
Addresses is the latest set of resolved addresses for the target.
Attributes contains arbitrary data about the resolver intended for
consumption by the load balancing policy.
ServiceConfig contains the result from parsing the latest service
config. If it is nil, it indicates no service config is present or the
resolver does not provide service configs.
func google.golang.org/grpc/balancer/grpclb/state.Set(state State, s *state.State) State
func ClientConn.UpdateState(State)
func google.golang.org/grpc/balancer/grpclb/state.Get(state State) *state.State
func google.golang.org/grpc/balancer/grpclb/state.Set(state State, s *state.State) State
func google.golang.org/grpc.(*ClientConn).updateResolverState(s State, err error) error
Target represents a target for gRPC, as specified in:
https://github.com/grpc/grpc/blob/master/doc/naming.md.
It is parsed from the target string that gets passed into Dial or DialContext by the user. And
grpc passes it to the resolver and the balancer.
If the target follows the naming spec, and the parsed scheme is registered with grpc, we will
parse the target string according to the spec. e.g. "dns://some_authority/foo.bar" will be parsed
into &Target{Scheme: "dns", Authority: "some_authority", Endpoint: "foo.bar"}
If the target does not contain a scheme, we will apply the default scheme, and set the Target to
be the full target string. e.g. "foo.bar" will be parsed into
&Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "foo.bar"}.
If the parsed scheme is not registered (i.e. no corresponding resolver available to resolve the
endpoint), we set the Scheme to be the default scheme, and set the Endpoint to be the full target
string. e.g. target string "unknown_scheme://authority/endpoint" will be parsed into
&Target{Scheme: resolver.GetDefaultScheme(), Endpoint: "unknown_scheme://authority/endpoint"}.
AuthoritystringEndpointstringSchemestring
func google.golang.org/grpc/internal/grpcutil.ParseTarget(target string) (ret Target)
func Builder.Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error)
Package-Level Functions (total 5, all are exported)
Get returns the resolver builder registered with the given scheme.
If no builder is register with the scheme, nil will be returned.
GetDefaultScheme gets the default scheme that will be used.
Register registers the resolver builder to the resolver map. b.Scheme will be
used as the scheme registered with this builder.
NOTE: this function must only be called during initialization time (i.e. in
an init() function), and is not thread-safe. If multiple Resolvers are
registered with the same name, the one registered last will take effect.
SetDefaultScheme sets the default scheme that will be used. The default
default scheme is "passthrough".
NOTE: this function must only be called during initialization time (i.e. in
an init() function), and is not thread-safe. The scheme set last overrides
previously set values.
UnregisterForTesting removes the resolver builder with the given scheme from the
resolver map.
This function is for testing only.
Package-Level Variables (total 2, neither is exported)
defaultScheme is the default scheme to use.
m is a map from scheme to resolver builder.
Package-Level Constants (total 2, both are exported)
Backend indicates the address is for a backend server.
Deprecated: use Attributes in Address instead.
GRPCLB indicates the address is for a grpclb load balancer.
Deprecated: to select the GRPCLB load balancing policy, use a service
config with a corresponding loadBalancingConfig. To supply balancer
addresses to the GRPCLB load balancing policy, set State.Attributes
using balancer/grpclb/state.Set.
The pages are generated with Goldsv0.3.2-preview. (GOOS=darwin GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu.
PR and bug reports are welcome and can be submitted to the issue list.
Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds.