Permite ejecución remota de procedimientos, con un esquema de cliente-servidor

  • El cliente realiza una llamada a un procedimiento
  • El servidor responde con el resultado de la operación

La comunicación remota es transparente para el usuario.

Hay portabilidad a través de implementación de interfaces bien definidas.

Interface Definition language

Se utilizan lenguajes de definición de interfaces, que luego son utilizados para generar las estructuras necesarias en el lenguaje deseado (Python, Go, Rust).

La interfaz de las funciones está definida según sus datos de entrada (input) y sus datos de salida (output).

Un ejemplo de esto es google protocol buffers

Tolerancia a Fallos

A diferencia de en una llamada local, debemos tomar medidas para prevenir fallos en la comunicación: Perdida de Mensajes.

Implementación

Una implementación típica tiene tres componentes:

  • La capa de negocio, que realiza llamadas y ejecuta procedimientos.
  • La capa de serialización, denominada stub.
  • La capa de comunicaciones.

gRPC

Es una definición de RPC que está basada en HTTP2, y Google Protocol Buffers para la serialización.

Se definen las interfaces en archivos .proto y estas son compiladas al lenguaje destino.