gRPC — фреймворк удалённого вызова процедур от Google. Работает поверх HTTP/2, использует Protocol Buffers для сериализации. Быстрее REST за счёт бинарного формата и мультиплексирования.
service UserService {
rpc GetUser(GetUserRequest) returns (User);
rpc ListUsers(ListUsersRequest) returns (stream User);
}
Четыре типа вызовов: unary (запрос-ответ), server streaming, client streaming, bidirectional streaming. Из .proto файла генерируется клиентский и серверный код. Go — один из лучших языков для gRPC благодаря отличной поддержке в google.golang.org/grpc. Используется для межсервисного взаимодействия, где REST был бы слишком медленным.