Présentation

Sommaire

Principe

La solution proposée repose sur la division du programme en trois sous-programmes :

  • Un programme gérant l'interaction avec l'utilisateur, lui permettant de soumettre ses tâches à effectuer : le client ;
  • Un programme gérant l'exécution des tâches sur chaque machine et fournissant les ressources disponibles sur la machine : l'agent ;
  • Un programme répartissant l'exécution des tâches envoyées par les clients sur chaque agent de façon optimale : le contrôleur.

Cette organisation va permettre à l'utilisateur d'utiliser toutes les machines disponibles de façon transparente, sans se soucier de répartir ses tâches.
C'est le contrôleur qui le fera à sa place et qui gérera leur suivi.

Architecture détaillée

Architecture du systeme

Modules

Client

La partie cliente consiste en une application composée d'une bibliothèque commune de fonctionnalités, et de deux interfaces distinctes :

  • Interface mode console : cette interface est destinée à être utilisée sur une machine sans système de fenêtrage ou alors par le biais d'une connexion distante (telnet, ssh). L'utilisateur effectue ses opérations par une série de lignes de commande.
  • Interface graphique : cette interface sera programmée en utilisant la librairie graphique Qt.

Le choix de la librairie graphique s'est porté sur QT car celle-ci peut être utilisée sur un nombre important de plateformes (Windows, Unix) et dispose d'une couche de fonctionnalités indépendante de la plateforme : communication par sockets, accès aux fichiers. On peut y trouver également des composants intéressants (moteur de rendu HTML par exemple).

De plus cette librairie est utilisable sous licence GPL.

Le rôle du client sera de permettre à l'utilisateur de soumettre son traitement, sa tâche, au système. Cette tâche est caractérisée par :

  • le chemin d'accès des données se trouvant sur le serveur de fichiers et qui seront exécutées par un agent,
  • Le nom du projet et un identifiant unique du projet,
  • Le nom du programme,
  • L'adresse IP du client, servant d'identification,
  • L'adresse mail du client, pour l'envoi d'informations concernant la fin de la tâche ou les erreurs survenues.

Cette tâche sera ensuite transmise du client au contrôleur.

Contrôleur

Le contrôleur est la partie la plus importante du système. Elle joue le rôle d'intermédiaire entre le client et les agents disponibles pour les calculs. Cette application ne possède pas d'interface graphique et s'exécutera uniquement en ligne de commande sous Unix (serveur Solaris notamment).

Pour cette application, nous utiliserons la librairie Netscape Portable Runtime (NSPR). Cette librairie permet de disposer d'une bibliothèque de programmation multi-plateformes pour la gestion du réseau et des fichiers.

Le contrôleur procède à une identification des clients désirant s'y connecter. La liste des clients autorisés est stockée dans un fichier. La politique d'autorisation d'accès des clients sera basé sur l'adresse réseau de ses derniers (possibilité d'interdire ou d'autoriser tout un sous réseau dans le fichier de configuration).

Dans une première solution évoquée, le contrôleur devait recevoir du client le descripteur de tâche, les données à traiter ainsi que les binaires. Le contrôleur était chargé de trouver un agent responsable de la tâche, et de lui envoyer les données à traiter.

Cependant, cette solution, bien que possible, ne satisfaisait pas complètement l'enseignant responsable. En effet, l'envoi des données pour exécuter la tâche ainsi que le résultat retour, surchargeaient toujours le réseau.

Une seconde solution obligeait le contrôleur à aller chercher les données et les binaires sur le serveur de stockage des fichiers, et de les transmettre à l'agent. Une fois la tâche terminée, l'agent renvoyait le résultat au contrôleur. Cette solution rejoignait en partie la précédente, et n'était toujours pas satisfaisante pour la même raison.

La solution retenue fut l'envoi du descripteur de tâche à l'agent, qui doit s'occuper de la récupération des données, de l'exécution de la tâche, et du stockage du résultat ; La charge de travail sur le contrôleur étant ainsi allégée.

Agent

Une tâche est indivisible et est exécutée en totalité par un seul agent.

L'agent va tout d'abord rechercher les données à traiter sur le serveur de fichiers en réseau (via NFS), et doit donc gérer l'exécution de cette tâche. Pour avoir accès au serveur de fichiers en réseau, il faudra avoir préalablement configuré l'agent. L'agent doit, de plus, renvoyer ponctuellement des informations au contrôleur concernant le déroulement de la tâche (charge CPU, taille des données traitées,...). Enfin, lorsqu'une tâche est terminée, l'agent le spécifie au contrôleur, qui enverra le compte rendu de l'exécution par mail. Il est également à noter qu'une vérification des données sera effectuée afin d'éviter de créer des doublons de données. Cette vérification sera effectuée par rapport à la taille et la date de création de la tâche.

L'agent créera un répertoire en local par tâche, afin de stocker les différentes données et fichiers. IL sera ensuite chargé d'ajouter sur le serveur de fichiers le résultat et le déroulement de l'exécution de la tâche.

Pour finir, à l'instar du contrôleur, l'agent procédera à une vérification de l'IP de la machine le contactant. Ceci permettra d'éviter que n'importe quelle machine vienne soumettre des tâches aux agents alors qu'elle n'y est pas autorisée.