I.5. Type d'architecture de systèmes
distribués
La recherche de classification n'est pas une tâche
facile, car les systèmes distribués sont complexes et
variés. Nous proposons dans cette partie une classification à
trois niveaux qui reflète la structuration en couche. Au premier niveau,
on repartie les systèmes distribués en considérant leurs
caractéristiques matérielles (couche matérielle). Au
second niveau, les systèmes distribués sont vus dans l'angle des
systèmes d'exploitation qui les supportent. Quant au troisième
niveau, il s'agit d'étudier les diverses approches de structuration
(architecture logiciel) des applications distribuées en terme de
composants (ou processus) et répartition des rôles.
? Architecture matérielle :
D'un point de vu abstrait, un ordinateur se compose de deux
types d'entités essentielles : les mémoires et les processeurs.
On peut envisager un système distribué physique comme une
collection des mémoires et des processeurs interconnectés de
telle sorte à pouvoir communiquer.
? Architecture logicielle : les systèmes
d'exploitation
Il existe une relation étroite entre les applications
distribuées et les systèmes d'exploitation. Dans un premier lieu,
la mise en oeuvre des applications distribuées dépend des
systèmes d'exploitation qui gèrent les différentes
plateformes matériels (c'est-à-dire les
services qu'ils offrent). Dans le second lieu, les systèmes
d'exploitation eux-mêmes peuvent être distribués.
? Architecture des applications
distribuées
Naturellement, les applications reparties ont plus
d'indépendance vis-à-vis de plateformes physiques et peuvent de
ce fait être organisées d'une multitude des façons.
L'Architecture client/serveur et se variantes constitue actuellement le
modèle le plus utilisé dans l'organisation des applications
distribuées. Cependant, d'autres modèles existent et leurs
utilisations augmente du jour au jour ; c'est le cas du modèle poste
à poste (processus pairs) et ses variantes. Il n'est pas rare dans les
applications distribuées que plusieurs modèles soient
combinés à la fois pour tirer profit des avantages des uns et
atténuer les inconvénients des autres.
I.6. Communication dans un système
distribué
Maintenant que nous connaissons les différentes
structures des
systèmes distribués, nous abordons les
différents mécanismes de communication
qui le régit.
Les technologies les plus utilisées aujourd'hui sont les
suivants :
? Les sockets
? Les communications synchrones : RPC (Remote Procedure Call)
ou
« message passing » des micronoyaux
? Le Java RMI (Remote Method Invocation)
? Les bus à objet distribués CORBA
Les sockets et le RPC ne permette pas de gérer
directement les différences de modèle de mémoire qui
peuvent exister entre deux machines différentes.
Les RMI sont spécifiques au langage JAVA. Cela impose
l'utilisation d'un seul langage(Java) sur l'ensemble des hôtes qui
désirent utiliser ce procédé. CORBA est indépendant
du langage utilisé et des machines d'exécution. Il peut donc
faire cohabiter des systèmes parfaitement
hétérogènes. Le « message passing » impose
d'implanter le même système d'exploitation sur les machines qui
utilisent cette technologie.
I.6.1. Le Socket
Un socket est défini comme l'extrémité
d'une voie de communication dans une paire de processus. Ce lien comporte donc
obligatoirement deux sockets.
Un socket est construit par la concaténation d'une
adresse IP et d'un numéro de port.
8
Les sockets sont utilisés dans bons nombre
d'applications structurées en « client/serveur ».
L'établissement d'une connexion entre deux processus se fait de la
manière suivante :
? Le serveur crée un socket et se positionne en
écoute de demande de connexion
? Un client fait une demande de connexion (création d'un
socket local)
? Le serveur accepte la connexion
? Le client et le serveur sont connectés par le tube
ainsi créé et peuvent lire ou écrire dans le socket
respectif. A partir de cet instant, chaque processus (ou thread) peut
être producteur ou consommateur de données.
Dans le cas où deux machines communiquent mais
possèdent des processeurs dont le modèle mémoire n'est pas
le même, il faut prévoir de convertir les données.
Une solution élégante est d'utiliser la couche
XDR (« Extended Data Représentation »). Cette technique permet
de travailler en environnement hétérogènes mais n'est pas
simple à mettre en oeuvre.
|