| Index: third_party/grpc/src/core/client_config/README.md
|
| diff --git a/third_party/grpc/src/core/client_config/README.md b/third_party/grpc/src/core/client_config/README.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..fff7a5af5b65e9fbfd7288192fca84aaeacc2497
|
| --- /dev/null
|
| +++ b/third_party/grpc/src/core/client_config/README.md
|
| @@ -0,0 +1,66 @@
|
| +Client Configuration Support for GRPC
|
| +=====================================
|
| +
|
| +This library provides high level configuration machinery to construct client
|
| +channels and load balance between them.
|
| +
|
| +Each grpc_channel is created with a grpc_resolver. It is the resolver's duty
|
| +to resolve a name into configuration data for the channel. Such configuration
|
| +data might include:
|
| +
|
| +- a list of (ip, port) addresses to connect to
|
| +- a load balancing policy to decide which server to send a request to
|
| +- a set of filters to mutate outgoing requests (say, by adding metadata)
|
| +
|
| +The resolver provides this data as a stream of grpc_client_config objects to
|
| +the channel. We represent configuration as a stream so that it can be changed
|
| +by the resolver during execution, by reacting to external events (such as a
|
| +new configuration file being pushed to some store).
|
| +
|
| +
|
| +Load Balancing
|
| +--------------
|
| +
|
| +Load balancing configuration is provided by a grpc_lb_policy object, stored as
|
| +part of grpc_client_config.
|
| +
|
| +The primary job of the load balancing policies is to pick a target server given only the
|
| +initial metadata for a request. It does this by providing a grpc_subchannel
|
| +object to the owning channel.
|
| +
|
| +
|
| +Sub-Channels
|
| +------------
|
| +
|
| +A sub-channel provides a connection to a server for a client channel. It has a
|
| +connectivity state like a regular channel, and so can be connected or
|
| +disconnected. This connectivity state can be used to inform load balancing
|
| +decisions (for example, by avoiding disconnected backends).
|
| +
|
| +Configured sub-channels are fully setup to participate in the grpc data plane.
|
| +Their behavior is specified by a set of grpc channel filters defined at their
|
| +construction. To customize this behavior, resolvers build
|
| +grpc_subchannel_factory objects, which use the decorator pattern to customize
|
| +construction arguments for concrete grpc_subchannel instances.
|
| +
|
| +
|
| +Naming for GRPC
|
| +===============
|
| +
|
| +Names in GRPC are represented by a URI (as defined in
|
| +[RFC 3986](https://tools.ietf.org/html/rfc3986)).
|
| +
|
| +The following schemes are currently supported:
|
| +
|
| +dns:///host:port - dns schemes are currently supported so long as authority is
|
| + empty (authority based dns resolution is expected in a future
|
| + release)
|
| +
|
| +unix:path - the unix scheme is used to create and connect to unix domain
|
| + sockets - the authority must be empty, and the path
|
| + represents the absolute or relative path to the desired
|
| + socket
|
| +
|
| +ipv4:host:port - a pre-resolved ipv4 dotted decimal address/port combination
|
| +
|
| +ipv6:[host]:port - a pre-resolved ipv6 address/port combination
|
|
|