Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: third_party/grpc/src/core/client_config/README.md

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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
OLDNEW
« no previous file with comments | « third_party/grpc/src/core/channel/subchannel_call_holder.c ('k') | third_party/grpc/src/core/client_config/client_config.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698