What is gRPC?
gRPC is a high-performance, open-source remote procedure call framework initially developed by Google. It uses HTTP/2 for transport, Protocol Buffers as its interface definition language and message serialization format, and supports bidirectional streaming.
gRPC is a modern remote procedure call (RPC) framework that enables client and server applications to communicate transparently. It was originally developed by Google and made open source in 2015. The name gRPC stands for gRPC Remote Procedure Calls, a recursive acronym. Its design focuses on high performance, low latency, and efficient serialization.
At its core, gRPC uses Protocol Buffers (protobuf) as both its Interface Definition Language (IDL) and its wire format for serializing structured data. A developer defines a service in a .proto file, specifying methods and their request/response message types. The protobuf compiler (protoc) then generates client and server stubs in multiple programming languages. gRPC sends these binary-encoded messages over HTTP/2 connections, which allows for multiplexing multiple calls on a single TCP connection, header compression, and server push. HTTP/2's streaming semantics also enable gRPC to support four kinds of service methods: unary, server-streaming, client-streaming, and bidirectional streaming.
gRPC fits between the application layer and the transport layer, acting as a contract-first communication layer for microservices architectures. It is commonly used for inter-service communication in cloud-native systems, replacing older protocols like SOAP or JSON-over-HTTP/1.1. Major adopters include Google, Netflix, and Square. The framework is managed by the Cloud Native Computing Foundation (CNCF) and has mature implementations in Go, Java, C/C++, Python, and other languages. gRPC-Web is available for browser clients, though it requires a proxy layer because browsers do not directly expose full HTTP/2 control to JavaScript.
Key facts
- Uses Protocol Buffers (protobuf) as IDL and serialization format.
- Runs exclusively on HTTP/2, enabling multiplexing and streaming.
- Supports four call types: unary, server-streaming, client-streaming, bidirectional streaming.
- Mature implementations for 11+ languages under CNCF governance.
- Default port is 443 (TLS) or 80 (plaintext).
How it works in practice
Related terms
References
More in Web Protocols
CORS
CORS (Cross-Origin Resource Sharing) is a browser security mechanism that lets servers explicitly allow web pages from one origin to request resources from a different origin via HTTP response headers.
GraphQL
GraphQL is a query language and runtime for APIs that lets clients request exactly the data they need in a single round trip, reducing over-fetching and under-fetching.
HTTP
HTTP is a text-based request-response protocol that defines how web clients and servers exchange resources, forming the foundation of data communication on the World Wide Web.
HTTP Pipelining
HTTP Pipelining is a technique in HTTP/1.1 that sends multiple requests on a single connection without waiting for each response, now largely replaced by HTTP/2 multiplexing.
HTTP Status Code
A three-digit integer in an HTTP response that indicates the result of the server's attempt to process the request, grouped into five classes (1xx through 5xx).
HTTP/1.1
HTTP/1.1 is the persistent-connection version of the Hypertext Transfer Protocol, defined in RFC 2616 and updated by RFCs 7230-7235, enabling multiple requests and responses over a single TCP connection.
HTTP/2
HTTP/2 is a binary, multiplexed version of HTTP that reduces latency through header compression, stream prioritization, and server push, as defined in RFC 7540.
HTTP/3
HTTP/3 is the third major version of the Hypertext Transfer Protocol, which runs over QUIC instead of TCP to reduce latency, eliminate head-of-line blocking, and improve connection setup time.
HTTPS
HTTPS (HTTP Secure) is HTTP traffic encrypted inside a TLS session, protecting data confidentiality, integrity, and server authenticity between a client and a web server.
Keep-Alive
Keep-Alive, also called persistent connection, allows multiple HTTP requests and responses over a single TCP connection, reducing latency and overhead compared to opening a new connection per request.