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: