GRPC
gRPC is a high-performance, open-source remote procedure call (RPC) framework initially developed by Google. It uses HTTP/2 for transport, Protocol Buffers as the interface definition language, and provides features such as authentication, bidirectional streaming, and flow control. gRPC is designed to connect services in and across data centers, supporting a wide range of languages and platforms.
Overview
gRPC enables client and server applications to communicate transparently, generating client and server stubs from a service definition written in Protocol Buffers. The framework supports four types of service methods: unary RPCs (single request, single response), server streaming, client streaming, and bidirectional streaming. gRPC is widely adopted in microservices architectures, distributed systems, and Internet of Things scenarios.
Features
- HTTP/2 based: Enables multiplexed streams, header compression, and low-latency communication.
- Protocol Buffers by default: Binary serialization format that is efficient and language-neutral.
- Cross-platform and multi-language – official support for C++, Java, Go, Python, Ruby, C#, Node.js, and more.
- Streaming – supports server, client, and bidirectional streaming.
- Pluggable authentication, tracing, load balancing, and health checking through middleware.
- Deadline/timeouts and cancellation built into the protocol.
- Interoperability – gRPC can be used with REST and other protocols via gRPC-Web.
History
gRPC was originally developed by Google in 2015 as a successor to its internal RPC framework, Stubby. It was open-sourced under the Apache License 2.0 and later contributed to the Cloud Native Computing Foundation (CNCF) in March 2017. The project is now a CNCF graduated project, with a large community of contributors and adopters in industry and academia.