junio 17, 2022

Llamadas a Procedimientos Remotos

 Llamadas a Procedimientos Remotos son técnicas de comunicación entre procesos. Es una paradigma de procesamiento distribuido que consiste en que un proceso local invoque la ejecución de una función o un procedimiento en una máquina remota. Los procesos locales y remotos se denominan por ello procesos del cliente y procesos del servidor respectivamente, y el paradigma de programación que utiliza este principio es la arquitectura cliente-servidor.  

RPC

La secuencia de acciones relacionadas con la ejecución de un RPC (Remote Procedure Call) se ilustra en la Figura 1:
  •  El stub del cliente es responsable de enviar una solicitud al servidor y esperar una respuesta:
    • Para enviar la solicitud, el stub primero debe crear el mensaje correspondiente. 
    • El stub convierte los parámetros de entrada en un formato adecuado para ser transmitido por la red y  ser reconocible por el servidor. Este proceso se conoce como linealización o serialización.
  •  Después de formatearse, el mensaje se envía al servidor a través de algún protocolo de nivel de sesión utilizando el sistema de comunicación. 
    • Ese protocolo se encarga de retransmitir la solicitud, esperar respuestas, descartar respuestas duplicadas u obsoletas, etc.
  • En el lado del servidor, el mensaje sigue una ruta simétrica:
    •  Es recibido y procesado por el protocolo de sesión, que identifica el servicio de destino y lo entrega al stub del servidor correspondiente. 
    • El stub del servidor extrae los parámetros del mensaje (deserializa) y realiza una llamada local a la función real que hace el trabajo. 
    • Cuando esta función regresa, el stub del servidor crea un mensaje de respuesta y lo entrega al protocolo de sesión para que sea devuelto al cliente, siguiendo los mismos pasos que antes, en la dirección opuesta. 
  • En el lado del cliente, el stub del cliente finalmente devuelve la llamada original al cliente, con cualquier resultado relevante.
1. Mecanismo de RPC


La primera vez que se invoca el stub del cliente, este se pone en contacto con un servidor de nombres para determinar la dirección en la que reside el servidor. 
  • Un servidor que tiene un servicio que ofrecer, exporta la interfaz para este servicio. Exportar una interfaz significa el registro de la misma en el sistema para que los clientes puedan usarla. 
  • Un Cliente debe importar una interfaz (exportada) antes de que pueda comenzar la comunicación.

Semántica de las llamadas asociadas a RPC 

Las principales opciones son: 
  • Reintentar mensaje de solicitud: controlar si se retransmite el mensaje de solicitud hasta se recibe una respuesta o supone que el servidor ha fallado.
  • Filtrado duplicado: controlar cuándo se usan las retransmisiones y si se debe filtrar solicitudes duplicadas en el servidor. 
  • Retransmisión de resultados: controlar si se debe mantener un historial de mensajes de resultados para permitir que los resultados perdidos se retransmitan sin volver a ejecutar las operaciones en el servidor.

Sistema Run-Time de  RPC:

El sistema  run-time RPC es una biblioteca de rutinas y un conjunto de servicios que manejan las comunicaciones de red que subyacen al mecanismo 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.

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 run-time, serializando y deserializando  de los mensajes, invocando el protocolo de tiempo de ejecución de RPC y, si se solicita, llevando a cabo algunos de los pasos de vinculación. 
  • En el lado del servidor, el stub proporciona una interfaz similar entre el sistema run-time  y los procedimientos del administrador local que ejecuta el servidor.
Visitar este enlace para: RPC en pythonRPC en R  


Referencias

  1. Coulouris, George F. Distributed Systems: Concepts and Design. Boston: Addison-Wesley, 2012.
  2. Tanenbaum, Andrew S., and Maarten van Steen. Distributed Systems: Principles and Paradigms. Upper Saddle River, NJ: Pearson Prentice Hall, 2007. 
  3. IONOS Digitalguide. “Remote Procedure Call: comunicación en sistemas cliente-servidor.” Accessed June 16, 2022. https://www.ionos.es/digitalguide/servidores/know-how/que-es-rpc/.
  4. GeeksforGeeks. “Remote Procedure Call (RPC) in Operating System,” August 30, 2017. https://www.geeksforgeeks.org/remote-procedure-call-rpc-in-operating-system/.

No hay comentarios.:

Publicar un comentario