Invocation à distance et intergiciel
L'invocation à distance permet à un programme d'appeler une procédure ou une méthode sur une autre machine comme si elle était locale, et l'intergiciel est la couche logicielle qui fournit cette abstraction et d'autres abstractions connexes sur un réseau.
Definition
L'invocation à distance est une abstraction de communication dans laquelle un client invoque une opération sur un processus distant en utilisant une interface d'appel de procédure locale, l'intergiciel sous-jacent gérant le marshalling des arguments, le transport et le rapport d'échec.
Scope
Ce sujet couvre l'appel de procédure à distance (RPC) et l'invocation de méthode à distance, le marshalling des arguments, la liaison et la dénomination, la sémantique d'appel (au plus une fois, au moins une fois, exactement une fois), ainsi que les couches d'intergiciel — courtiers d'objets, intergiciels orientés message et frameworks RPC modernes — qui les implémentent. Il aborde également les limites bien connues de la transparence : les façons dont les appels à distance diffèrent inévitablement des appels locaux.
Core questions
- Comment une interaction réseau peut-elle être présentée avec la commodité d'un appel de procédure local ?
- Quelle sémantique d'appel est réalisable en présence de pertes de messages et de pannes de processus ?
- Où l'abstraction de la transparence de la localisation se décompose-t-elle nécessairement ?
Key theories
- Appel de procédure à distance
- L'abstraction RPC encapsule une interaction distante comme un appel d'apparence locale, avec des stubs client et serveur qui marshallent et démarshallent les arguments ; l'atteinte d'une sémantique au plus une fois nécessite une gestion minutieuse de la retransmission et de la détection des doublons.
- Stratification de l'intergiciel
- L'intergiciel se situe entre le système d'exploitation et l'application pour fournir des services de dénomination, de marshalling et d'invocation, allant des courtiers de requêtes d'objets aux systèmes orientés message et de publication-abonnement.
- Limites de la transparence de la distribution
- La latence, les défaillances partielles, la concurrence et l'accès à la mémoire signifient que les objets distants ne peuvent pas être rendus totalement indiscernables des objets locaux ; par conséquent, les conceptions qui ignorent ces différences ont tendance à échouer sous charge ou en cas de partitionnement.
Clinical relevance
Le RPC et l'intergiciel constituent le tissu conjonctif des logiciels distribués modernes : les architectures de microservices, les maillages de services (service meshes) et les API cloud sont tous construits sur des frameworks d'invocation à distance, et leurs concepteurs doivent raisonner explicitement sur la sémantique d'appel et les défaillances partielles.
History
L'article de Birrell et Nelson de 1984 a établi le RPC comme une abstraction pratique ; les années 1990 ont vu l'émergence d'intergiciels orientés objet tels que CORBA et Java RMI, tempérés par l'avertissement influent de Waldo et de ses collègues concernant les limites de la transparence ; les frameworks modernes poursuivent cette lignée avec des RPC légers et basés sur des schémas (schema-driven) sur le web.
Debates
- Les appels à distance devraient-ils être rendus exactement semblables aux appels locaux ?
- Une transparence totale de la localisation simplifie la programmation mais masque la latence et les défaillances partielles, conduisant à des systèmes fragiles ; le point de vue opposé, articulé par Waldo et ses collègues, soutient que la distribution doit être exposée afin que les développeurs puissent gérer explicitement les défaillances.
Key figures
- Andrew Birrell
- Bruce Nelson
- Jim Waldo
- Andrew S. Tanenbaum
Related topics
Seminal works
- birrell1984
- waldo1994
Frequently asked questions
- Que signifie la sémantique d'appel « au plus une fois » ?
- Elle garantit qu'une opération distante est exécutée soit zéro, soit une seule fois, jamais plus, même si la requête est retransmise. C'est l'objectif pratique courant car l'exécution « exactement une fois » est beaucoup plus difficile à garantir en cas de défaillances.