Exercices corrigés contrôle DARE -Développement d'applications réparties

Ce document est un corrigé de contrôle écrit pour le module DARE (M1 Réseaux et Systèmes Distribués) de l'Université Constantine 2 Abdelhamid Mehri, destiné aux étudiants de la Faculté des Nouvelles Technologies de l'Information et de la Communication. Il couvre les notions suivantes:

  • Développement d'une application répartie pour l'utilisation des ressources de plusieurs serveurs.
  • Propriétés et modèles d'architecture des applications réparties.
  • Implémentation de l'architecture en utilisant Java RMI et les sockets.
  • Alternatives possibles pour l'implémentation de l'architecture.

Exercices TD DARE -Développement d'applications réparties

Télécharger PDF

Université Constantine 2 Abdelhamid Mehri

Faculté des Nouvelles Technologies de l'Information et de la Communication

Département d'Informatique Fondamentale et ses Applications

Date : 25 janvier 2018

Année universitaire : 2017/2018

Durée : 1h30

Corrigé Contrôle Écrit DARE (M1 Réseaux et Systèmes Distribués)

Partie 1 (04 points)

On vous demande de développer une application répartie permettant d'utiliser les ressources de plusieurs serveurs afin d'effectuer des calculs complexes demandés par des clients.

  • Citez deux propriétés des applications réparties (sans explication).
    • Scalabilité
    • Hétérogénéité
  • Rappelez deux modèles d'architecture des applications réparties.
    • Client-serveur
    • P2P
  • Quelle est l'architecture la plus adaptée pour cette application ?
  • Client-serveur

    Nous faisons le choix de l'architecture suivante :

    Lorsqu'un client demande un calcul, il effectue sa demande auprès d'un serveur WEB qui va répartir la charge de calcul en fonction du nombre de serveurs dont il dispose. Puis, il récoltera les résultats de chaque partie du calcul pour fournir au client le résultat final. On supposera que chaque serveur doit s'identifier auprès du serveur maître (Master) lorsqu'il est lancé.

  • Quel est le niveau de cette architecture (en termes de tiers) ?
  • Client-serveur multi-tiers (n-tiers)

Partie 2 (07 points)

Nous souhaitons à présent implémenter cette architecture à l'aide du JAVA RMI :

  • JAVA RMI est un cas particulier de Middleware, quelle est cette particularité ?
  • JAVA RMI est un middleware entre deux machines Java.

  • Expliquez le principe de fonctionnement de JAVA RMI.
  • Principe de base : Les différentes étapes pour créer un objet distant et l'appeler avec RMI sont :

    • Le développement côté serveur se compose de :
      • La définition d'une interface qui contient les méthodes qui peuvent être appelées à distance.
      • L'écriture d'une classe qui implémente cette interface.
      • L'écriture d'une classe qui instancie l'objet et l'enregistre en lui affectant un nom dans le registre de noms RMI (RMI Registry).
    • Le développement côté client se compose de :
      • L'obtention d'une référence sur l'objet distant à partir de son nom.
      • L'appel à la méthode à partir de cette référence.
  • En utilisant le schéma de la partie 1, quel est le nombre nécessaire d'interfaces à implémenter pour réaliser cette architecture ?
  • Le nombre d'interfaces est de quatre (04).

  • À quel niveau sont-elles implémentées ?
  • Au niveau des serveurs (03) et du Master (01).

  • Proposez en JAVA une interface possible.
  • import java.rmi.*;
    import java.util.*;
    
    public interface serv1Interface extends Remote {
      public int fact(int N) throws RemoteException;
    }
      
  • Même question en utilisant le mode multi-threadé.
  • Aucun changement.

Partie 3 (07 points)

Nous souhaitons en un deuxième temps implémenter cette architecture en utilisant les sockets :

  • Quels sont les types de sockets existants ?
    • TCP/IP
    • UDP/IP
  • Quelle est la différence principale entre ces types ?
    • TCP : mode connecté.
    • UDP : mode non connecté.
  • Expliquez le principe de fonctionnement des sockets.
  • Le principe de fonctionnement des sockets repose sur la communication entre deux processus via des canaux de communication établis sur un réseau. Les sockets permettent d'envoyer et de recevoir des données entre ces processus.

  • Corrigez et commentez le code suivant : (Plusieurs solutions sont possibles)
  • import java.io.*;
    import java.net.*;
    
    public class Client {
      public static void main(String args[]) throws Exception {
        ServerSocket serverSocket = new ServerSocket(7877);
        Socket socket = serverSocket.accept();
        // Erreur : pas de num port pour accept
        System.out.println("Réception de requête");
        Socket socket = new Socket("localhost", 7877);
        // Erreur : ligne du code de la classe client
        try {
          BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
          // ... (code manquant)
          reader.close();
          writer.close();
          socket.close(); // fermeture des sockets
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
      
  • Discutez brièvement ce code (Plusieurs discussions sont possibles).
  • Le code présenté correspond à la classe serveur alors que le nom affiché est : client.

Partie 4 (02 points)

Nous souhaitons une dernière fois implémenter cette architecture en utilisant un troisième mécanisme, citez des alternatives possibles ou des exemples.

  • Middleware
  • RPC
  • Corba
  • Service Web
  • Composant réparti
  • Java Beans
  • ...

FAQ

Qu'est-ce que la scalabilité dans les applications réparties ?

La scalabilité dans les applications réparties fait référence à la capacité du système à gérer une augmentation de la charge de travail sans dégradation significative des performances.

Quelle est la différence entre TCP et UDP ?

TCP (Transmission Control Protocol) est un protocole orienté connexion qui garantit la livraison des données dans l'ordre et sans erreur. UDP (User Datagram Protocol) est un protocole sans connexion qui ne garantit pas la livraison des données dans l'ordre ni sans erreur.

Qu'est-ce que JAVA RMI ?

JAVA RMI (Remote Method Invocation) est une technologie Java qui permet à une application Java d'invoquer des méthodes sur un objet distant comme si c'était un objet local.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne