La llamada a procedimiento remoto (RPC) es una técnica poderosa para construir aplicaciones distribuidas basadas en cliente-servidor . Se basa en la extensión de la llamada de procedimiento local convencional de manera que el procedimiento llamado no necesita existir en el mismo espacio de direcciones que el procedimiento de llamada . Los dos procesos pueden estar en el mismo sistema, o pueden estar en diferentes sistemas con una red que los conecta.
Al realizar una llamada a procedimiento remoto:
1. El entorno de llamada se suspende, los parámetros del procedimiento se transfieren a través de la red al entorno donde se ejecutará el procedimiento y el procedimiento se ejecuta allí.
2. Cuando finaliza el procedimiento y produce sus resultados, estos se transfieren de nuevo al entorno de llamada, donde se reanuda la ejecución como si regresara de una llamada de procedimiento normal.
NOTA: RPC es especialmente adecuado para la interacción cliente-servidor (por ejemplo, consulta-respuesta) en la que el flujo de control alterna entre la persona que llama y la persona que recibe la llamada . Conceptualmente, el cliente y el servidor no se ejecutan al mismo tiempo. En cambio, el hilo de ejecución salta de la persona que llama a la persona que recibe la llamada y luego de regreso.
Trabajo de RPC
Los siguientes pasos tienen lugar durante una RPC:
- Un cliente invoca un procedimiento stub de cliente , pasando parámetros de la forma habitual. El stub del cliente reside dentro del propio espacio de direcciones del cliente.
- El stub del cliente ordena (empaqueta) los parámetros en un mensaje. Marshalling incluye convertir la representación de los parámetros en un formato estándar y copiar cada parámetro en el mensaje.
- El stub del cliente pasa el mensaje a la capa de transporte, que lo envía a la máquina del servidor remoto.
- En el servidor, la capa de transporte pasa el mensaje a un stub del servidor, que desarma (desempaqueta) los parámetros y llama a la rutina del servidor deseada utilizando el mecanismo de llamada de procedimiento regular.
- Cuando se completa el procedimiento del servidor, regresa al stub del servidor (por ejemplo, a través de una devolución de llamada de procedimiento normal) , que ordena los valores devueltos en un mensaje. El stub del servidor entrega el mensaje a la capa de transporte.
- La capa de transporte devuelve el mensaje de resultado a la capa de transporte del cliente, que devuelve el mensaje al stub del cliente.
- El stub del cliente desarma los parámetros de retorno y la ejecución regresa a la persona que llama.
PROBLEMAS DE RPC :
Problemas que deben abordarse:
1. Tiempo de ejecución
de RPC: el sistema de tiempo de ejecución de RPC es una biblioteca de rutinas y un conjunto de servicios que manejan las comunicaciones de red que subyacen al mecanismo de RPC. En el curso de una llamada RPC, el código de los sistemas de tiempo de ejecución del lado del cliente y del lado del servidor maneja el enlace, establece comunicaciones a través de un protocolo apropiado, pasa datos de llamadas entre el cliente y el servidor y maneja los errores de comunicación.
2. Stub:
la función del stub es proporcionar transparencia al código de aplicación escrito por el programador .
- En el lado del cliente , el stub maneja la interfaz entre la llamada al procedimiento local del cliente y el sistema de tiempo de ejecución, ordena y desarma los datos, invoca el protocolo de tiempo de ejecución RPC y, si se solicita, lleva a cabo algunos de los pasos de vinculación.
- En el lado del servidor , el stub proporciona una interfaz similar entre el sistema de tiempo de ejecución y los procedimientos del administrador local que ejecuta el servidor.
3. Vinculación: ¿Cómo sabe el cliente a quién llamar y dónde reside el servicio?
La solución más flexible es usar el enlace dinámico y encontrar el servidor en tiempo de ejecución cuando se crea por primera vez la RPC. La primera vez que se invoca el stub del cliente, se pone en contacto con un servidor de nombres para determinar la dirección de transporte en la que reside el servidor.
La encuadernación consta de dos partes:
- Denominación:
- Localizando:
- Un servidor que tiene un servicio que ofrecer exporta una interfaz para él. Exportar una interfaz la registra en el sistema para que los clientes puedan usarla.
- Un Cliente debe importar una interfaz (exportada) antes de que pueda comenzar la comunicación.
4. La semántica de llamadas asociada con RPC:
se clasifica principalmente en las siguientes opciones:
- Reintentar mensaje de solicitud:
si se debe volver a intentar enviar un mensaje de solicitud cuando un servidor falló o el receptor no recibió el mensaje. - Filtrado de duplicados:
elimine las requests de servidor duplicadas. - Retransmisión de resultados:
para reenviar mensajes perdidos sin volver a ejecutar las operaciones en el lado del servidor.
VENTAJAS :
- RPC proporciona ABSTRACCIÓN , es decir, la naturaleza de paso de mensajes de la comunicación de red está oculta para el usuario.
- RPC a menudo omite muchas de las capas de protocolo para mejorar el rendimiento. Incluso una pequeña mejora en el rendimiento es importante porque un programa puede invocar RPC con frecuencia.
- RPC permite el uso de las aplicaciones en el entorno distribuido, no solo en el entorno local.
- Con el código RPC, se minimiza el esfuerzo de reescritura y desarrollo.
- Modelos orientados a procesos y orientados a subprocesos compatibles con RPC.
Referencias:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Redes informáticas: un enfoque de arriba hacia abajo por FOROUZAN
Este artículo es una contribución de Yash Singla . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA