OLD | NEW |
(Empty) | |
| 1 Client Configuration Support for GRPC |
| 2 ===================================== |
| 3 |
| 4 This library provides high level configuration machinery to construct client |
| 5 channels and load balance between them. |
| 6 |
| 7 Each grpc_channel is created with a grpc_resolver. It is the resolver's duty |
| 8 to resolve a name into configuration data for the channel. Such configuration |
| 9 data might include: |
| 10 |
| 11 - a list of (ip, port) addresses to connect to |
| 12 - a load balancing policy to decide which server to send a request to |
| 13 - a set of filters to mutate outgoing requests (say, by adding metadata) |
| 14 |
| 15 The resolver provides this data as a stream of grpc_client_config objects to |
| 16 the channel. We represent configuration as a stream so that it can be changed |
| 17 by the resolver during execution, by reacting to external events (such as a |
| 18 new configuration file being pushed to some store). |
| 19 |
| 20 |
| 21 Load Balancing |
| 22 -------------- |
| 23 |
| 24 Load balancing configuration is provided by a grpc_lb_policy object, stored as |
| 25 part of grpc_client_config. |
| 26 |
| 27 The primary job of the load balancing policies is to pick a target server given
only the |
| 28 initial metadata for a request. It does this by providing a grpc_subchannel |
| 29 object to the owning channel. |
| 30 |
| 31 |
| 32 Sub-Channels |
| 33 ------------ |
| 34 |
| 35 A sub-channel provides a connection to a server for a client channel. It has a |
| 36 connectivity state like a regular channel, and so can be connected or |
| 37 disconnected. This connectivity state can be used to inform load balancing |
| 38 decisions (for example, by avoiding disconnected backends). |
| 39 |
| 40 Configured sub-channels are fully setup to participate in the grpc data plane. |
| 41 Their behavior is specified by a set of grpc channel filters defined at their |
| 42 construction. To customize this behavior, resolvers build |
| 43 grpc_subchannel_factory objects, which use the decorator pattern to customize |
| 44 construction arguments for concrete grpc_subchannel instances. |
| 45 |
| 46 |
| 47 Naming for GRPC |
| 48 =============== |
| 49 |
| 50 Names in GRPC are represented by a URI (as defined in |
| 51 [RFC 3986](https://tools.ietf.org/html/rfc3986)). |
| 52 |
| 53 The following schemes are currently supported: |
| 54 |
| 55 dns:///host:port - dns schemes are currently supported so long as authority is |
| 56 empty (authority based dns resolution is expected in a future |
| 57 release) |
| 58 |
| 59 unix:path - the unix scheme is used to create and connect to unix domain |
| 60 sockets - the authority must be empty, and the path |
| 61 represents the absolute or relative path to the desired |
| 62 socket |
| 63 |
| 64 ipv4:host:port - a pre-resolved ipv4 dotted decimal address/port combination |
| 65 |
| 66 ipv6:[host]:port - a pre-resolved ipv6 address/port combination |
OLD | NEW |