From 8a1423daa9410da6164c1e8e8a82e6ef7998e2b6 Mon Sep 17 00:00:00 2001 From: JasterV <49537445+JasterV@users.noreply.github.com> Date: Tue, 17 Jun 2025 18:01:46 +0200 Subject: [PATCH] Update presentation --- codebook.toml | 1 + docs/assets/images/framework-diagram.png | Bin 0 -> 81596 bytes docs/learning_grpc.md | 61 ++++++++++------------- 3 files changed, 28 insertions(+), 34 deletions(-) create mode 100644 docs/assets/images/framework-diagram.png diff --git a/codebook.toml b/codebook.toml index 8cd3e40..8730303 100644 --- a/codebook.toml +++ b/codebook.toml @@ -1,4 +1,5 @@ words = [ + "birrell", "chrono", "dyn", "idl", diff --git a/docs/assets/images/framework-diagram.png b/docs/assets/images/framework-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0d18e170c228c04ac6f11dc7dcbfa0568bb88a GIT binary patch literal 81596 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

I^#PpZl>zU1Vqh~ZZBYpdfthkE2*wNOtY-g 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� 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 OF9ooQO!+&Lp#KA4gzVM; literal 0 HcmV?d00001 diff --git a/docs/learning_grpc.md b/docs/learning_grpc.md index 154fe22..843c84e 100644 --- a/docs/learning_grpc.md +++ b/docs/learning_grpc.md @@ -15,18 +15,15 @@ An idea to extend transfer of control and transmission of data from one machine note: - The concept dates back to 1976 [1] +- Paper written by ANDREW D. BIRRELL and BRUCE JAY NELSON + - Back in the days building network application required big expertise and was not user friendly - They wanted to make it as easy to call a remote service as a local one, very user friendly - They wanted to make it efficient (Networks were very slow) - They wanted to make it secure (Networks were not secure) +- RPCRuntime is also known as RPC communications package -Five pieces of program are involved when making an RPC call: - -User -> User-stub -> RPC communications package (known as RPCRuntime) -> server-stub -> the server. - -They auto-generated the client and server stubs: - -`The user-stub and server-stub are automatically generated, by a program called Lupine.` +- In that lab, the user-stub and server-stub used to be generated by a program called Lupine. [1] WHITE, J. E. A high-level framework for network-based resource sharing. In Proc. National Computer Conference, (June 1976). @@ -48,19 +45,17 @@ google Remote procedure calls # Why a framework? +why a framework diagram + gRPC dictates how you will build your network interface. Code is generated for you batteries included, you must only fill the gaps. note: -All the underlying details about networking, encoding & more is handled for you. - -It is more a framework in the sense of servers. They must use the generated Server Stub, with the only need of implementing the Service interfaces. - -Clients will use the generated client Stub. For them the gRPC code will be less intrusive and will feel more like a library - -Some implementations wrap the original C library, some don't. +- All the underlying details about networking, encoding & more is handled for you. +- For clients the feeling must be more of a library one. +- Some implementations wrap the original C library, some don't. --- @@ -74,18 +69,15 @@ So we get for free note: -Explain multiplexing and server push +Multiplexing & server push are especially relevant in gRPC --- + ## 4 types of RPC supported rpc types -note: - -Explain that each of these RPC types can be specified on the protobuffers IDL - --- ## Metadata @@ -97,32 +89,33 @@ Implemented using HTTP/2 headers. note: -gRPC metadata can be sent and received by both the client and the server. Headers are sent from the client to the server before the initial request and from the server to the client before the initial response of an RPC call. - -On the link I show, they document the supported values for metadata - -Can be useful for: Authentication & tracing +- gRPC metadata can be sent and received by both the client and the server. +- Headers are sent from the client to the server before the initial request. +- Headers are sent from the server to the client before the initial response of an RPC call. +- The links shows a document specifying supported values as metadata. +- Can be useful for: Authentication & tracing. --- ## And many more features -- **Health checking** (Service-specific health checking) -- **Interceptors** (Middleware for RPCs) -- **Reflection** (Service discoverability & ease debugging) -- RPC automatic & manual **cancellations** -- Call **retries** +- Service-specific **health checking** +- Request **interceptors** +- **Reflection** for better debugging & discoverability +- Configurable call **retries** via retry policies +- RPC **cancellations** - **Flow control** for streaming -- **Load balancing** (Client requests can be load balanced between multiple servers) +- Client RPC **load balancing** +- ... note: -It is important to explain that these features might differ from language to language, since it depends completely on how each of them implements gRPC +- Features might differ from language to language -- **Flow control** is a mechanism to ensure that a receiver of messages does not get overwhelmed by a fast sender. Flow control prevents data loss, improves performance and increases reliability. +- **Flow control**: mechanism to ensure that a receiver of messages does not get overwhelmed by a fast sender -- **Reflection**: Explain that we won't go in detail about reflection but that I believe we should research more about it since it can be useful for better developer experience +- **Reflection**: Allows for clients without the generated client code to discover the gRPC services on the fly -- **Health check**: gRPC specifies a standard service API ([health/v1](https://github.com/grpc/grpc-proto/blob/master/grpc/health/v1/health.proto)) for performing health check calls against gRPC servers. An implementation of this service is provided, but you are responsible for updating the health status of your services. It is pluggable, and some languages might not provide it. +- **Health check**: A service is provided to monitor the health of specific services in your server --- # Protocol buffers