Como en muchos sistemas RPC, gRPC se basa en la idea de definir un servicio, especificando los métodos que se pueden llamar de forma remota con sus parámetros y tipos de devolución.

A partir de una definición de servicio en un archivo .proto, gRPC proporciona complementos de compilación que generan código del lado del cliente y del servidor.

Untitled

Tipos de API gRPC

Untitled

Unary RPC. Es el tipo más simple de RPC donde el cliente envía una sola solicitud y obtiene una sola respuesta.

service HelloService {
	/* Unary **RPCs** 
	 *[<https://grpc.io/docs/what-is-grpc/core-concepts/>](<https://grpc.io/docs/what-is-grpc/core-concepts/>) 
	 */
  rpc SayHello (HelloRequest) returns (HelloResponse);
}

message HelloRequest {
  string greeting = 1;
}

message HelloResponse {
  string reply = 1;
}

Síncrono vs. asíncrono

Las llamadas RPC sincrónicas que se bloquean hasta que llega una respuesta del servidor son la aproximación más cercana a la abstracción de una llamada de procedimiento a la que aspira RPC. Por otro lado, las redes son inherentemente asincrónicas y en muchos escenarios es útil poder iniciar RPC sin bloquear el subproceso actual. La API de programación de gRPC en la mayoría de los lenguajes viene en versiones sincrónicas y asincrónicas.

Escalabilidad

Untitled