Cours Intergiciels

ENSEEIHT – Département Informatique – 2ième année

TP sockets

Daniel Hagimont

Daniel.Hagimont@enseeiht.fr



Objectif

L'objectif de ce TP est l'initiation à la programmation répartie. Il consiste à programmer une application typique comportant de la répartition à l'aide de Socket. Vous devez implanter un répartiteur de charge (Load Balancer) qui reçoit des requêtes HTTP et les redirige de façon aléatoire vers un ensemble de serveurs Web.

Le début de cette classe est le suivant :

public class LoadBalancer {

static String hosts[] = {"localhost", "localhost"};
static int ports[] = {8081,8082};
static int nbHosts = 2;
static Random rand = new Random();

}

A chaque réception d'une requête HTTP (une connexion TCP), LoadBalancer transfère la requête à un des serveurs web (les adresses de ces serveurs sont données par les tables hosts et ports) et LoadBalancer transfère le résultat de la requête à l'émetteur. Le choix du serveur Web est aléatoire (rand.nextInt(nbHosts) retourne un entier entre 0 et nbHosts-1). Pour être efficace, LoadBalancer est évidemment multi-threadé.


Pour la programmation des entrées/sorties, on utilisera :


Tests


Pour tester, vous disposez d'un petit serveur Web (Comanche.java).
Vous pouvez en lancer 2 depuis 2 terminaux avec :
            java Comanche 8081
            java Comanche 8082

Lancez votre LoadBalancer sur la même machine (il accepte les connexions sur le port 8080).

Entrez dans un navigateur (sur la même machine) l'URL : localhost:8080/page.html
(la page page.html est sensée est présente dans le répertoire où vous avez lancé Comanche)