Introduction to gRPCs

Question: What is gRPC ?

Answer → gRPC is an open-source remote procedure call framework created by Google in 2016. It was a re-write of their internal RPC Infrastructure, that they used for years.

Question: What is an RPC ?

Answer → A gRPC is an popular implementation of RPC.

Question: Who all uses gRPC as preferred choice of communication ?

Answer → Many Organisations have adopted gRPC as their preferred RPC mechanism to connect a large number of micro-services, running within and across data-centres.

Question: What makes gRPC so popular ?

Answer → There are many good reasons that gRPC is so popular :-

Reason #1.) gRPC has a thriving developer eco-system. It makes it very easy to develop production quality and type-safe APIs, that scale well.

Reason #2.) gRPC is high-performance out of the box.

Question: What is the core of the gRPC based eco-system ?

Answer → The core of this eco-system is the use of Protocol-Buffers, as its Data-Interchange format. Protocol-Buffer is a Language-agnostic and platform-agnostic mechanism for encoding structured data.

Question: What is the connection between gRPC and Protocol-Buffers ?

Answer → gRPC uses Protocol-Buffers, to encode and send data over the wire by default. While the gRPC could also support other encoding formats like JSON, Protocol-Buffers provides several advantages that make it encoding format of choice for gRPCs.

Question: Explain little bit more details about the Protocol-Buffers ?

Answer → Please find below, some key points of working with ProtoBuf :-

1.) Protocol-Buffers supports strongly-typed schema definitions. The structure of the data over the wire is defined in a proto file.

2.) Protocol-Buffers provide strong tooling support, to turn the schema defined in a proto-file into data-access-classes, for all popular programming languages.

3.) A gRPC service is also defined in a proto file, by specifying RPC method parameters and return types.

4.) The same tooling is used to generate the grpc-Client and gRPC-Server code, using the proto file. Developers uses these generated classes :-

Question: What is the advantage offered by Protocol-Buffers supporting so many Programming Languages

Answer → By supporting so many Programming Languages, the client and server can independently choose the PL and eco-system best suited for their own particular use-cases. This is traditionally not the case with most of the RPC-Frameworks.

Question: Why gRPC is highly performant ?

Answer → There are primarily two factors for gRPCs having high performance :-

Reason #1.) Protocol-Buffers is a very efficient binary encoding format. It’s much faster than JSONs.

Reason #2.) gRPC is built on top of Http/2, to provide a high-performance foundation at scale. It allows multiple stream of messages, over a single long-lived TCP-Connection.

Question: What is the primary benefit of using http/2 ?

Answer → There are many benefits of using HTTP/2, but the major one is Multiplexing, through the help of which, Http/2 allows the gRPC framework to handle many concurrent RPC calls, over a small number of TCP-connections between Client & Server.

Question: How does gRPC works ?

Answer → Let’s take our earlier example :-

Step #1.) When the OrderService makes a gRPC call to the Payment-Service, it invokes the client-code generated by gRPC tooling at build time. This generated client-code is called as Client-Stub.

Step #2.) gRPC encodes the data passed to the Client-Stub into the Protocol-Buffers.

Step #3.) gRPC then sends the encoded-data to the Low-level Transport Layer.

Step #4.) gRPC sends the data over the network, as a stream of Http/2 data-frames. Because of Binary-Encoding and Network Optimisation, gRPC is said to be 5 times faster than JSONs.

Step #5.) The PaymentService receives the packets from Network, decodes-them and invokes the server-application.

Step #6.) The result this returned from the Server-Application, gets encoded into Protocol-Buffers and sent back to the Transport Layer.

Step #7.) The OrderService receives the packets, decodes them and sends the result to the Client-Application.

Question: Why there is no wide-spread reach of gRPC ?

Answer → One reason is that, gRPCs relies on lower-level access to HTTP/2 primitives.

No Browser currently provides the level of control, required over web requests to support a gRPC Client.

Question: Is it possible to make gRPC calls from a Browser ?

Answer → Yes, it is very much possible, with the help of Proxies. This technology is called as gRPC-Web.

Question: When should we make use of gRPCs ?

Answer → gRPCs is the inter-service communication mechanism of choice between the micro-services in a Data-Centre.

That’s all in this blog. If you liked reading it, do clap on this page. We shall see you in next document.



Software Engineer for Big Data distributed systems

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store