6.3 L'architecture du serveur

Les expériences menées sur le systeme de stockage nous ont conduit à développer notre propre serveur Web spécialisé dans la VoD. Ce serveur est nommé MMServer.

Le serveur Web spécialisé dans la VoD que nous proposons est basé sur le modèle du serveur Apache (version WinNT). Pour chaque nouveau client le serveur crée un nouveau thread (fil d'exécution) qui répond aux requêtes du client. Dès que le client se déconnecte, le thread est détruit.

Le serveur communique avec les clients en utilisant le protocole HTTP 1.1, ce qui fait que n'importe quel client travaillant avec ce protocole est capable de récupérer l'information située sur le serveur.

Le serveur consiste en un processus qui "écoute" les clients sur le port TCP 80 . Pour chaque client qui se connecte sur ce port, un agent de contrôle d'accès vérifie si le serveur a les ressources nécessaires pour répondre dans des bonnes conditions à ce client et aux clients déjà acceptés. Dans le cas positif, le client est accepté et il va recevoir les données qu'il demande. Dan le cas contraire, la connexion avec le client est coupée.

message URL fig70.gif
Figure 70 Vue d'ensemble sur l'activité du serveur

La différence par rapport aux autres serveurs Web réside dans le mode de travail de chaque thread, optimisé pour exploiter au maximum le système de stockage dans le cadre de la stratégie présentée dans le Chapitre 2. Le principe est de limiter le nombre de sauts (seek) sur le système de stockage, en transférant une quantité de données plus grande que celle demandée à la fois par un client.

Le système d'exploitation et la carte RAID utilisent eux-mêmes des stratégies de transfert de données à travers un cache plus ou moins grand, en fonction des caractéristiques de la machine et du système d'exploitation. Mais dans le cas particulier d'un serveur VoD cette stratégie ne donne pas souvent de bons résultats. Cela nous a amenés à proposer une stratégie de cache en alternative à celle du système d'exploitation.

message URL fig71.gif
Figure 71 Le principe de travail avec les données de notre serveur : l'utilisation de la mémoire vive du serveur pour améliorer les performances en lecture

Chaque fois que le client demande un bloc, une quantité plus grande des données (contenant le bloc et multiple de la taille d'allocation élémentaire sur le système de fichiers) sont transférées à partir du système de stockage dans la mémoire vive du serveur. A partir de là, le bloc est envoyé au client comme réponse, et les autres données sont gardées pour des requêtes ultérieures.

Tenant compte de la spécificité de la représentation séquentielle des données multimédia, les prochaines requêtes provenant du même client ont de fortes chances d'être les prochains blocs du fichier, donc ils se trouvent dans la mémoire vive du serveur. Les exceptions sont les opérations de saut sur la présentation, par exemple, mais qui représentent une faible proportion des accès.

Bien entendu si le bloc se trouve déjà dans la mémoire vive du serveur, celui-ci sera envoyé comme réponse sans accéder au système de stockage.

D'une telle manière on minimise le nombre de requêtes adressées au système de stockage. Il est vrai que la carte RAID effectuent la même chose, mais à un niveau plus bas. Ce deuxième niveau d'optimisation est utile dans le cas où le serveur dispose d'une quantité de mémoire plus importante que la carte RAID (et c'est le cas actuellement24). Par exemple, une carte RAID avec 16 MB RAM ne peut pas travailler d'une manière efficace avec plus de 60 clients dans la VoD.

Une autre différence par rapport aux serveurs Web classiques réside dans l'existence d'un agent de contrôle d'accès. Il utilise les résultats ( 11 ) pour vérifier à chaque instant l'occupation du serveur. Il représente un filtre nécessaire pour éviter le dépassement des limites du serveur.

Notes
24.

La mémoire vive sur le cartes RAID ne dépassent pas 256 MBytes (sur [dell-hdd]), à la différence des ordinateurs qui peuvent utiliser des GB de mémoire vive.