Modèle pour les systèmes distribués

Traditionnellement, le fait d’avoir un système monolithique exécuté sur plusieurs ordinateurs signifiait fractionner le système en composants client et serveur distincts. Dans ces systèmes, le composant client gérait l’interface utilisateur et le serveur fournissait le traitement back-end, comme l’accès à la base de données, l’impression, etc. Au fur et à mesure que les ordinateurs proliféraient, chutaient en coût et devenaient connectés par des réseaux de bande passante de plus en plus élevés, la division des systèmes logiciels en plusieurs composants devenait plus pratique, chaque composant s’exécutant sur un ordinateur différent et exécutant une fonction spécialisée. Cette approche a simplifié le développement, la gestion et l’administration et a souvent amélioré les performances et la robustesse, car la défaillance d’un ordinateur n’a pas nécessairement désactivé l’ensemble du système.

Dans de nombreux cas, le système apparaît au client comme un cloud opaque qui effectue les opérations nécessaires, même si le système distribué est composé de nœuds individuels, comme illustré dans la figure suivante.

les clients accèdent aux services dans un système de serveurs rpc qui apparaît comme un cloud opaque pour les clients externes

L’opacité du cloud est conservée, car les opérations de calcul sont appelées pour le compte du client. Par conséquent, les clients peuvent localiser un ordinateur (un nœud) dans le cloud et demander une opération donnée ; lors de l’exécution de l’opération, cet ordinateur peut appeler des fonctionnalités sur d’autres ordinateurs dans le cloud sans exposer au client les étapes supplémentaires ou l’ordinateur sur lequel elles ont été effectuées.

Avec ce paradigme, les mécanismes d’un système distribué de type cloud peuvent être décomposés en de nombreux échanges de paquets individuels ou conversations entre des nœuds individuels.

Les systèmes client-serveur traditionnels ont deux nœuds avec des rôles et des responsabilités fixes. Les systèmes distribués modernes peuvent avoir plus de deux nœuds, et leurs rôles sont souvent dynamiques. Dans une conversation, un nœud peut être un client, tandis que dans une autre conversation, le nœud peut être le serveur. Dans de nombreux cas, le consommateur final des fonctionnalités exposées est un client avec un utilisateur assis à un clavier, regardant la sortie. Dans d’autres cas, le système distribué fonctionne sans assistance, en effectuant des opérations en arrière-plan.

Le système distribué n’a peut-être pas de clients et de serveurs dédiés pour chaque échange de paquets particulier, mais il est important de se rappeler qu’il existe un appelant (ou initiateur, l’un des deux étant souvent appelé le client). Il y a également le destinataire de l’appel (souvent appelé serveur). Il n’est pas nécessaire d’avoir des échanges de paquets bidirectionnels au format demande-réponse d’un système distribué; souvent, les messages ne sont envoyés que d’une seule façon.