%%
date:: [[2022-09-28]]
%%
# [[gRPC]]
[site](https://grpc.io/)
gRPC is an implementation of [[Remote Procedure Call]] (RPC) developed by [[Google]]. It is a design framework for [[API]]s that uses [[HTTP 2]] as a transport protocol. It is a procedure-oriented API model, but mixes it with the entity-oriented API model so that the actual endpoints are accessible via [[HTTP]].
gRPC is a [[CNCF]] incubating project, and it was accepted in February 2017.
## APIs
There are four main [[API]] types of RPCs:
- unary
- server streaming
- client streaming
- bidirectional streaming
![[Performance Testing gRPC Services#^apis]]
## Advantages of gRPC
### It's performant
gRPC, like [[Remote Procedure Call|RPC]], sends messages in binary format, which means it doesn't need to be [[Interpreted programming languages|interpreted]], reducing performance overhead.
### It has support for a variety of languages
gRPC has libraries for a lot of languages, like [[C]], [[Go]], [[Java]], [[Python]], [[Kotlin]], [[Ruby]], [[PHP]], [[Dart]], and many more.
### It's simple
gRPC uses [[Protobuf]] to define services, so it's leveraging an existing standard. It's also easy to get started with gRPC, as the runtime and dev environment can be installed with one command. [^grpc]
[^grpc]: gRPC. Retrieved on July 15th, 2023 from https://grpc.io/