Protocolo de llamada a procedimiento remoto (RPC) en sistema distribuido

⚡ Resumen inteligente

La llamada a procedimiento remoto (RPC, por sus siglas en inglés) es un protocolo de comunicación entre procesos que permite a un programa ejecutar un procedimiento en otro espacio de direcciones o máquina, ocultando los detalles de la red tras una llamada a función local ordinaria en sistemas distribuidos cliente-servidor.

  • 📞 Definición: RPC permite que un cliente invoque un procedimiento en un servidor remoto como si se tratara de una llamada local.
  • 🗂️ Tipos de Candidiasis: Los modos de llamada de retorno, difusión y procesamiento por lotes de RPC difieren en la forma en que se enrutan y se ponen en cola las solicitudes.
  • ???? ️ Architectura: En cada llamada, cinco componentes cooperan: el cliente, el stub del cliente, el entorno de ejecución RPC, el stub del servidor y el servidor.
  • 🔄 Cómo funciona: Los stubs serializan los parámetros en un mensaje y deserializan el resultado que se devuelve a quien realiza la llamada.
  • 🇧🇷 Compensaciones: RPC simplifica el código distribuido, pero añade sobrecarga de red y puntos de fallo en comparación con las llamadas locales.
  • 🤖 Perspectiva de la IA: gRPC sirve modelos de aprendizaje automático entre microservicios, y Copilot acelera la escritura de stubs RPC.

Llamada a procedimiento remoto (RPC) en un sistema distribuido

¿Qué es RPC?

Llamada a procedimiento remoto (RPC) es un comunicación entre procesos Técnica utilizada en aplicaciones cliente-servidor. Las siglas RPC significan Llamada a Procedimiento Remoto. Los mecanismos RPC se utilizan cuando un programa informático ejecuta un procedimiento o subrutina en un espacio de direcciones diferente, codificado como una llamada a procedimiento normal, sin que el programador tenga que especificar explícitamente los detalles de la interacción remota.

Esta llamada a procedimiento también gestiona protocolos de transporte de bajo nivel, como UDP y TCP/IP, para transmitir los datos del mensaje entre programas.

Tipos de RPC

Tres tipos de RPC son:

  • RPC de devolución de llamada
  • RPC de transmisión
  • RPC en modo por lotes

RPC de devolución de llamada

Este tipo de RPC habilita un paradigma de igual a igual (P2P) entre los procesos participantes. Permite que un proceso actúe tanto como cliente como servidor.

Funciones de devolución de llamada RPC:

  • Gestiona problemas de aplicaciones interactivas procesadas de forma remota.
  • Proporciona al servidor el identificador del cliente.
  • La función de devolución de llamada hace que el proceso del cliente espere.
  • Gestiona los interbloqueos de las devoluciones de llamada.
  • Facilita un paradigma de igual a igual entre los procesos participantes.

RPC de transmisión

Una llamada a procedimiento remoto (RPC) de difusión es una solicitud de un cliente que se transmite por la red y es procesada por todos los servidores que disponen del método para procesar dicha solicitud.

Funciones de Broadcast RPC:

  • Permite especificar que el mensaje de solicitud del cliente debe ser transmitido.
  • Puede declarar puertos de transmisión.
  • Ayuda a reducir la carga en la red física.

RPC en modo por lotes

El modo RPC por lotes ayuda a poner en cola solicitudes RPC separadas en un búfer de transmisión en el lado del cliente y luego enviarlas a través de una red en un solo lote al servidor.

Funciones de RPC en modo por lotes:

  • Minimiza la sobrecarga que supone enviar una solicitud, ya que las envía a través de la red en un solo lote al servidor.
  • Este tipo de protocolo RPC solo es eficiente para aplicaciones que necesitan tasas de llamadas más bajas.
  • Necesita un protocolo de transmisión confiable.

RPC Architectura

La arquitectura RPC tiene principalmente cinco componentes del programa:

  1. Cliente
  2. Trozo de cliente
  3. Tiempo de ejecución de RPC
  4. Trozo de servidor
  5. Server

RPC Architectura

RPC Architectura

¿Cómo funciona RPC?

Durante el proceso RPC se llevan a cabo los siguientes pasos:

Paso 1) El cliente, el stub del cliente y una instancia del entorno de ejecución RPC se ejecutan en la máquina del cliente.

Paso 2) El cliente inicia un proceso de cliente stub pasando los parámetros de la forma habitual. El cliente stub se almacena en su propio espacio de direcciones. Además, solicita al entorno de ejecución RPC local que envíe la solicitud al servidor stub.

Paso 3) En esta etapa, el usuario accede a RPC mediante una llamada a procedimiento local estándar. El entorno de ejecución de RPC gestiona la transmisión de mensajes entre el cliente y el servidor a través de la red. También se encarga de la retransmisión, la confirmación, el enrutamiento y el cifrado.

Paso 4) Tras completar el procedimiento del servidor, la ejecución regresa al módulo auxiliar del servidor, que empaqueta (serializa) los valores de retorno en un mensaje. A continuación, el módulo auxiliar del servidor envía el mensaje de vuelta a la capa de transporte.

Paso 5) En este paso, la capa de transporte envía el mensaje de resultado de vuelta a la capa de transporte del cliente, que a su vez devuelve el mensaje al stub del cliente.

Paso 6) En esta etapa, el cliente stub deserializa (desempaqueta) los parámetros de retorno en el paquete resultante, y la ejecución regresa al llamador.

Características de la RPC

Estas son las características esenciales de RPC:

  • El procedimiento al que se hace referencia se encuentra en otro proceso, que probablemente reside en otra máquina.
  • Los procesos no comparten espacio de direcciones.
  • Los parámetros se pasan sólo por valores.
  • RPC se ejecuta dentro del entorno del proceso del servidor.
  • No ofrece acceso al entorno del procedimiento de llamada.

Características de RPC

Estas son las características importantes de RPC:

  • Sintaxis de llamada sencilla.
  • Ofrece una semántica conocida.
  • Proporciona una interfaz bien definida.
  • Puede comunicarse entre procesos en la misma máquina o en máquinas diferentes.

Ventajas de RPC

Estas son las ventajas y beneficios de la RPC:

  • RPC ayuda a los clientes a comunicarse con los servidores mediante el uso convencional de llamadas a procedimientos en lenguajes de alto nivel.
  • La llamada a procedimiento remoto (RPC) se basa en la llamada a procedimiento local, pero lo más probable es que el procedimiento llamado se ejecute en un proceso diferente y, por lo general, en un ordenador diferente.
  • RPC admite modelos orientados a procesos y orientados a hilos.
  • RPC oculta al usuario el mecanismo interno de paso de mensajes.
  • Compromete muchas de las capas del protocolo para mejorar el rendimiento.
  • RPC proporciona abstracción; por ejemplo, la naturaleza de paso de mensajes de la comunicación de red permanece oculta para el usuario.
  • La comunicación entre protocolos (RPC) se puede utilizar tanto en entornos distribuidos como locales.
  • El esfuerzo necesario para reescribir y rediseñar el código es mínimo.

Desventajas de RPC

Estas son las desventajas/desventajas de usar RPC:

  • La llamada a procedimiento remoto pasa los parámetros únicamente por valor; no se permiten valores de puntero (referencia).
  • El tiempo de llamada (y respuesta) a un procedimiento remoto —la sobrecarga— es significativamente mayor que el de un procedimiento local.
  • Este mecanismo es altamente vulnerable a fallos, ya que implica un sistema de comunicación, otra máquina y otro proceso.
  • El concepto RPC se puede implementar de diferentes maneras, por lo que no existe un estándar único.
  • No ofrece flexibilidad en cuanto a la arquitectura de hardware, ya que se basa principalmente en la interacción.
  • El coste del proceso aumenta debido a la llamada a procedimiento remoto.

Preguntas Frecuentes

RPC expone las acciones como procedimientos remotos, mientras que REST expone los datos como recursos a los que se accede mediante verbos HTTP. RPC se asemeja a llamar a una función local; REST se centra en los recursos y el estado.

gRPC es GoogleMarco de trabajo RPC moderno y de alto rendimiento. Utiliza HTTP/2 y protocolo. Buffery admite la transmisión bidireccional, lo que la hace popular para la comunicación entre microservicios.

RPC puede ser de ambos tipos. Una llamada síncrona se bloquea hasta que el servidor devuelve un resultado, mientras que una llamada asíncrona responde inmediatamente y procesa la respuesta posteriormente. Frameworks como gRPC admiten ambos estilos.

RPC es una forma de IPC que funciona entre máquinas separadas. Mientras que muchos métodos de IPC comparten memoria en un mismo host, RPC intercambia mensajes a través de una red para que los procesos en diferentes computadoras puedan cooperar.

Las implementaciones comunes de RPC incluyen gRPC, Apache Thrift, XML-RPC, JSON-RPC y Java RMI. Se diferencian en el formato y la forma de transporte de los datos, pero todas permiten que un cliente llame a un procedimiento en un servidor remoto.

RPC no es seguro por defecto; la seguridad depende del protocolo de transporte. Las implementaciones añaden cifrado TLS, tokens de autenticación y controles de acceso para proteger las llamadas.

Las plataformas de aprendizaje automático utilizan RPC, especialmente gRPC, para servir predicciones de modelos entre microservicios. Un cliente envía características y recibe un resultado de inferencia, manteniendoping Los sistemas de IA son rápidos y están débilmente acoplados.

Sí. GitHub Copilot puede generar definiciones de servicio .proto, stubs de cliente y manejadores de servidor para gRPC. Aun así, los desarrolladores deben revisar las interfaces generadas, el manejo de errores y el control de versiones antes de implementar en producción.

Resumir este post con: