Invocación remota y middleware
La invocación remota permite que un programa llame a un procedimiento o método en otra máquina como si fuera local, y el middleware es la capa de software que proporciona esta y otras abstracciones relacionadas a través de una red.
Definition
La invocación remota es una abstracción de comunicación en la que un cliente invoca una operación en un proceso remoto utilizando una interfaz de llamada a procedimiento local, con el middleware subyacente manejando el marshalling de argumentos, el transporte y la notificación de fallos.
Scope
Este tema cubre la llamada a procedimiento remoto (RPC) y la invocación de método remoto, el marshalling de argumentos, el enlace y la denominación, la semántica de llamada (como máximo una vez, al menos una vez, exactamente una vez), y las capas de middleware —corredores de objetos, middleware orientado a mensajes y marcos RPC modernos— que las implementan. También cubre los límites conocidos de la transparencia: las formas en que las llamadas remotas difieren inevitablemente de las locales.
Core questions
- ¿Cómo se puede presentar una interacción de red con la conveniencia de una llamada a procedimiento local?
- ¿Qué semántica de llamada se puede lograr en presencia de pérdida de mensajes y fallos de procesos?
- ¿Dónde se rompe necesariamente la abstracción de la transparencia de ubicación?
Key theories
- Llamada a procedimiento remoto
- La abstracción RPC empaqueta una interacción remota como una llamada de apariencia local, con stubs de cliente y servidor que realizan el marshalling y unmarshalling de argumentos; lograr incluso la semántica de "como máximo una vez" requiere un manejo cuidadoso de la retransmisión y la detección de duplicados.
- Capas de middleware
- El middleware se sitúa entre el sistema operativo y la aplicación para proporcionar servicios de denominación, marshalling e invocación, que van desde corredores de solicitudes de objetos hasta sistemas orientados a mensajes y de publicación-suscripción.
- Límites de la transparencia de distribución
- La latencia, los fallos parciales, la concurrencia y el acceso a la memoria significan que los objetos remotos no pueden hacerse completamente indistinguibles de los locales, por lo que los diseños que ignoran estas diferencias tienden a fallar bajo carga o partición.
Clinical relevance
RPC y el middleware son el tejido conectivo del software distribuido moderno: las arquitecturas de microservicios, las mallas de servicios y las API en la nube se construyen sobre marcos de invocación remota, y sus diseñadores deben razonar explícitamente sobre la semántica de las llamadas y los fallos parciales.
History
El artículo de Birrell y Nelson de 1984 estableció RPC como una abstracción práctica; la década de 1990 trajo middleware orientado a objetos como CORBA y Java RMI, atenuado por la influyente advertencia de Waldo y sus colegas sobre los límites de la transparencia; los marcos modernos continúan el linaje con RPC ligero y basado en esquemas a través de la web.
Debates
- ¿Las llamadas remotas deberían parecerse exactamente a las locales?
- La transparencia de ubicación completa simplifica la programación pero oculta la latencia y los fallos parciales, lo que lleva a sistemas frágiles; la visión opuesta, articulada por Waldo y sus colegas, sostiene que la distribución debe exponerse para que los desarrolladores puedan manejar los fallos explícitamente.
Key figures
- Andrew Birrell
- Bruce Nelson
- Jim Waldo
- Andrew S. Tanenbaum
Related topics
Seminal works
- birrell1984
- waldo1994
Frequently asked questions
- ¿Qué significa la semántica de llamada "como máximo una vez"?
- Garantiza que una operación remota se ejecuta cero o una vez, nunca más, incluso si la solicitud se retransmite. Este es el objetivo práctico común porque la ejecución "exactamente una vez" es mucho más difícil de garantizar ante fallos.