gRPC
Basics

Qué es gRPC

Es un framework open source que hace uso de RPC (Remote Procedure Call) fue desarrollado por Google, en Marzo de 2015 decide hacerlo de código abierto.

Quiénes usan gRPC

Netflix, Cisco, Jupiter Networks, CoreOS entre otras empresas usan gRPC para la comunicación de sistemas y servicios

Cómo funciona gRPC

Una aplicación (cliente) puede llamar directamente un método que se encuentra en un servidor diferente ya sea en la misma maquina o en otra maquina diferente.

 

En el servidor de gRPC se implementa una interfaz que permite que cualquier cliente sin importa el lenguaje envíe y reciba mensajes (datos)

Cómo se comunica gRPC

gRPC usa por defecto Protocol Buffers (profobuffer) para su comunicación, los Protobuffers son un mecanismo para serializar los datos similar a como funciona un serializer en DRF

Algunas de las ventajas que tienen los Protobuffers son:

  • Son fuertemente tipados
  • Los datos serializados son convertidos a bytestings lo que permite que sean más ligeros.
  • Tienen valores por defecto (Pro o Contra)

Servicios gRPC

gRPC usa el concepto de definición de servicios, estos servicios son métodos que pueden ser llamados de forma remota pasando ciertos parámetros y retornar una respuesta.

Tipos de Métodos en los servicios

Unary -> El cliente envía un mensaje al server y recibe una                       respuesta.

 

Server Stream -> El cliente envía un mensaje al server y                                           el server retorna un stream de mensajes.

 

Client Stream -> El cliente envía un stream de mensajes al 

                                server y el server retorna un mensaje.

 

Bidirectional Stream -> Tanto cliente como servidor envían                                                 streams

rpc Sayhello(HelloRequest) returns (HelloResponse)
rpc Sayhello(HelloRequest) returns (stream HelloResponse)
rpc Sayhello(stream HelloRequest) returns (HelloResponse)
rpc Sayhello(stream HelloRequest) returns (stream HelloResponse)

gRPC vs. Rest

gRPC Rest
Formato Profobuffer (binary code) Json
Protocolo HTTP/2 HTTP/1.1
Peticiones Unary
Client Stream
Server Stream
Bidirectional Stream
Request / Response

Protobuffer

Los profobuffer son los archivos que se usan para definir los servicios (métodos) que se van a usar, cual va a ser el mensaje que reciben y cual el mensaje que responden.

 

Dentro de las ventajas que encontramos al usar protobuffers podemos mencionar.

- Fuertemente tipados

- Los datos son convertidos a bytestrings reduciendo el tamaño del mensaje

 

Los archivos protobuffer tiene la extensión .proto

Protobuffer

syntax = "proto2";

// Definición del servicio
service Greeter {
  // Definición del método con el mensaje que espera
  // y el mensaje que retorna
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}


// Definición de mensajes
message HelloRequest {
  string name = 1;
}


message HelloReply {
  string message = 1;
}

Los atributos de los mensajes están definidos así:

<tipo de dato> <nombre del atributo> = <id de atributo>;

Protobuffer

Los id de los atributos deben ser únicos.

 

Si un atributo es eliminado no se debe usar su indice para evitar problema de compatibilidad.

 

Todos los atributos tienen un valor por defecto dependiendo del tipo de dato.

Preguntas?

gRPC Basics

By gollum23

gRPC Basics

  • 212