This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dido:public:ra:xapend:xapend.b_stds:defact:google:grpc [2020/11/13 02:21] nick ↷ Links adapted because of a move operation |
dido:public:ra:xapend:xapend.b_stds:defact:google:grpc [2021/11/09 15:41] (current) char ↷ Links adapted because of a move operation |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Google: gRPC ===== | ===== Google: gRPC ===== | ||
| - | [[dido:public:ra:xapend:xapend.b_stds:defact:google| return to Google page ]] | + | [[dido:public:ra:xapend:xapend.b_stds:defact:google:start| return to Google page ]] |
| <table> | <table> | ||
| Line 31: | Line 31: | ||
| **Source: [[https://en.wikipedia.org/wiki/Git | The following is from the about gRPC page ]]** | **Source: [[https://en.wikipedia.org/wiki/Git | The following is from the about gRPC page ]]** | ||
| - | //gRPC is a modern open source high performance [[dido:public:ra:xapend:xapend.b_stds:tech:ietf:1831]] framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.// | + | //gRPC is a modern open source high [[dido:public:ra:xapend:xapend.a_glossary:p:performance|performance]] [[dido:public:ra:xapend:xapend.b_stds:tech:ietf:1831]] framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and [[dido:public:ra:xapend:xapend.a_glossary:a:authentication|authentication]]. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services.// |
| //The main usage scenarios:// | //The main usage scenarios:// | ||
| Line 52: | Line 52: | ||
| // The protocol itself is based on http2, and exploits many of its benefits. Google’s development of SPDY laid down the first designs for what eventually became http2.// | // The protocol itself is based on http2, and exploits many of its benefits. Google’s development of SPDY laid down the first designs for what eventually became http2.// | ||
| - | // gRPC supports several built in features inherited from http2, such as compressing headers, persistent single TCP connections, cancellation and timeout contracts between client and server.// | + | // gRPC supports several built in features inherited from http2, such as compressing headers, persistent single TCP connections, cancellation and timeout contracts between [[dido:public:ra:xapend:xapend.a_glossary:c:client|client]] and [[dido:public:ra:xapend:xapend.a_glossary:s:server|server]].// |
| - | // The protocol has built in flow control from http2 on data frames. This is very handy for insuring clients respect the throughput of your system, but does add an extra level of complexity when diagnosing issues in your infrastructure, because either client or server can set their own flow control values.// | + | // The protocol has built in flow control from http2 on data frames. This is very handy for insuring clients respect the [[dido:public:ra:xapend:xapend.a_glossary:t:thruput|throughput]] of your system, but does add an extra level of complexity when diagnosing issues in your infrastructure, because either client or server can set their own flow control values.// |
| // Load balancing (LB) is normally performed by the client, which chooses the server for a given request from a list provided by a Load Balancing server. The LB server will monitor the health of endpoints and use this and other factors to manage the list provided to clients. Clients will use a simple algorithm such as round-robin internally, but note that the LB server may apply more complex logic when compiling the list for a given client.// | // Load balancing (LB) is normally performed by the client, which chooses the server for a given request from a list provided by a Load Balancing server. The LB server will monitor the health of endpoints and use this and other factors to manage the list provided to clients. Clients will use a simple algorithm such as round-robin internally, but note that the LB server may apply more complex logic when compiling the list for a given client.// | ||
| Line 67: | Line 67: | ||
| // Streaming is really powerful and can be accomplished in three different configurations: client pushing messages to a stream; server pushing messages to a stream; or bidirectional, where client and server are both sending data in two streams in the same method. In all cases the client initiates the RPC method.// \\ | // Streaming is really powerful and can be accomplished in three different configurations: client pushing messages to a stream; server pushing messages to a stream; or bidirectional, where client and server are both sending data in two streams in the same method. In all cases the client initiates the RPC method.// \\ | ||
| - | //Streams don’t provide any acknowledgement of receipt until the stream completes, which can add complexity when the system needs to cope with node failures or network partitions. This can be mitigated by using a bidirectional stream to return ACKs. If a server is given a chance to kill a connection gracefully a message will be returned indicating the last received message.// | + | //Streams don’t provide any acknowledgement of receipt until the stream completes, which can add complexity when the system needs to cope with [[dido:public:ra:xapend:xapend.a_glossary:n:node|node]] failures or network partitions. This can be mitigated by using a bidirectional stream to return ACKs. If a server is given a chance to kill a connection gracefully a message will be returned indicating the last received message.// |
| + | /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | ||
| + | /* To add a discussion page to this page, comment out the line that says | ||
| + | ~~DISCUSSION:off~~ | ||
| + | */ | ||
| + | ~~DISCUSSION:on|Outstanding Issues~~ | ||
| + | ~~DISCUSSION:off~~ | ||