name_resolving/

directory
v0.0.0-...-8004eb0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2022 License: GPL-3.0

README

Name resolving

This examples shows how ClientConn can pick different name resolvers.

What is a name resolver

A name resolver can be seen as a map[service-name][]backend-ip. It takes a service name, and returns a list of IPs of the backends. A common used name resolver is DNS.

In this example, a resolver is created to resolve resolver.example.grpc.io to localhost:50051.

Try it

go run server/main.go
go run client/main.go

Explanation

The echo server is serving on ":50051". Two clients are created, one is dialing to passthrough:///localhost:50051, while the other is dialing to example:///resolver.example.grpc.io. Both of them can connect the server.

Name resolver is picked based on the scheme in the target string. See https://github.com/grpc/grpc/blob/master/doc/naming.md for the target syntax.

The first client picks the passthrough resolver, which takes the input, and use it as the backend addresses.

The second is connecting to service name resolver.example.grpc.io. Without a proper name resolver, this would fail. In the example it picks the example resolver that we installed. The example resolver can handle resolver.example.grpc.io correctly by returning the backend address. So even though the backend IP is not set when ClientConn is created, the connection will be created to the correct backend.

Directories

Path Synopsis
Binary client is an example client.
Binary client is an example client.
Binary server is an example server.
Binary server is an example server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL