Ce document est destiné aux étudiants de l'Université Constantine 2 –Abdelhamid Mehri, Faculté des nouvelles technologies &IC, Département de IFA, Master 1 /RSD, Matière DARE 2018-2019.
Il couvre les notions suivantes:
- Développement d'une application répartie pour l'utilisation des ressources de plusieurs serveurs.
- Types de communications des systèmes distribués.
- Synchronisation dans la communication par message et par mémoire partagée.
- Gestion des événements par le BROKER dans la communication par événements et notifications.
- Architecture matérielle des systèmes distribués.
- Utilisation des sockets et leurs types.
- Principe de fonctionnement de Java RMI et règles pour implémenter une interface.
- Stockage de l'historique de la communication CoAP dans une base de données distribuée.
Examen DARE 2018-2019 -Développement d'applications réparties
Télécharger PDFUniversité Constantine 2 –Abdelhamid mehri
Faculté des nouvelles technologies &IC
Département de IFA / Master 1 /RSD Matière DARE 2018-2019
Examen final
Partie1 (10 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.
Q1 : Citez trois types de communications des systèmes distribués. (1 pt)
- Communication par messages
- Communication par mémoire commune
- Communication par évènements et notifications
- Communication de groupe
- Communication par flux
- Appel de procédures à distance
- Invocation de méthodes à distance
Q2 : Comment est assurée la synchronisation dans la communication par message et par mémoire partagée ? (1 pt)
- Des primitives de connexion et d’acquittement
- Les mécanismes classiques tels les sémaphores
Q3 : Dans la communication par évènements et notifications (publish/suscribe) la gestion des évènements par le BROKER peut prendre plusieurs forme, citez deux d’entre elles. (1 pt)
- Hub and spoke
- Snowflake
- Bus de Messages
Q 4 : Quelle est l’architecture matérielle des systèmes distribués ? (0.5 pt)
Tous les systèmes distribués sont de type MIMD
Q 5 : Les Sockets (prises de raccordement) sont : (1 pt)
- une norme de communication. (V/F)
- une couche de protocole. (V/F)
- une interface entre le programme d'application et les protocoles de communication. (V/F)
Q6 : Remplissez le tableau suivant. (2 pts)
Tableau à remplir
Q7 : Un socket s'utilise comme un fichier avec trois étapes citez les dans l’ordre. (1.5 pt)
- Création/Définition/Ouverture
- Communication
- Fermeture/Libération
Q8 : Quels sont les types de sockets existants et quelle est la différence principale entre ces types ? (0.5 pt)
- TCP/IP et UDP/IP
- TCP : mode connecté
- UDP : mode non connecté
Q9 : Parmi les axes de recherches couvrant les systèmes distribués l’axe de la Théorie est fondamental, à votre avis pourquoi ? (1 pt)
Pour bien comprendre la problématique de la répartition, il est important de pouvoir modéliser le plus formellement possible sa sémantique. Il s’agit d’élaborer des modèles de calcul traduisant de façon abstraite et formelle (mathématique) les propriétés d’un calcul réparti. Par exemple : en utilisant algèbre de processus communicant ou les logiques pour la description des propriétés.
Partie 2 (10 points)
CoAP est un protocole de transfert Web spécialisé basé sur l'architecture REST, répondant aux exigences M2M (Machine to Machine) dans les environnements soumis à des contraintes.
1- A partir de la ligne de description plus haut, donnez deux caractéristiques de CoAP. (1 pt)
- Une faible charge d'en-tête, faible complexité d'analyse, et un adressage basé sur l'URI (Uniform Ressources Identifier). La proximité avec HTTP facilite notamment le développement de passerelles entre le monde des objets CoAP et le Web actuel.
2- Quelles sont les modèles de communication que prend en charge CoAP ? (1 pt)
- Le modèle requête-réponse et prend également en charge l'architecture en publication-souscription en mode étendu.
3- CoAP est basé sur UDP. Comment gère-t-il la non-fiabilité de l’UDP ? (1 pt)
Il s’appuie sur une approche à deux couches, 1- Une couche de messagerie CoAP utilisée afin de traiter la non fiabilité d’UDP ainsi que la nature asynchrone des interactions (4 messages sont définis CON, ACK, NON, RST) et une couche d’interaction héritée du protocole http.
4- Quelle est l'architecture la plus adaptée aux applications utilisant le protocole CoAP ? 1-tier, 2-tiers, n-tiers ? Motivez votre réponse en donnant un schéma explicatif. (1 pt)
2-tiers
De façons Basique la couche interaction de CoAP hérite du protocole HTTP les Requêtes GET, POST, PUT, DELETE comme décrits dans le tableau suivant :
| Les verbes HTTP | Fonction | Sémantique | Avec le code |
|---|---|---|---|
| POST | Create | La méthode POST est utilisée pour envoyer une entité vers la ressource indiquée. Cela entraîne généralement un changement d'état ou des effets de bord sur le serveur. | 404 (Not Found), 409 (Conflict) if resource already exists. |
| GET | Read | demande une représentation de la ressource spécifiée. Les requêtes GET doivent uniquement être utilisées afin de récupérer des données. | 200 (OK), single customer. 404 (Not Found), if ID not found or invalid. |
| PUT | Update/ Replace | demande une représentation de la ressource spécifiée. Les requêtes GET doivent uniquement être utilisées afin de récupérer des données. | 200 (OK) or 204 (No Content). 404 (Not Found), if ID not found or invalid. |
| DELETE | Delete | La méthode DELETE supprime la ressource indiquée. |
Source : https://developer.mozilla.org/fr/docs/Web/HTTP/Méthode
Nous souhaitons utiliser Java RMI pour implémenter CoAP en mode mono-threadé.
5- Rappelez le principe de fonction du java RMI. (2 pts)
1. Principe de base : Les différentes étapes pour créer un objet distant et l'appeler avec RMI sont:
- Le développement coté 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.
6- Rappelez les règles que doit respecter une classe qui implémente une interface. (1.5 pt)
- Doit implémenter une interface distante (Remote) ;
- Doit étendre la classe java.rmi.server.UnicastRemoteObject ;
- Peut avoir des méthodes locales.
7- Donnez une interface possible CoAPInterface. (1pt)
import java.rmi.*;
import java.util.*;
public interface CoAPInterface extends Remote {
public String get() throws RemoteException;
public String post() throws RemoteException;
public String put() throws RemoteException;
public void delete() throws RemoteException;
}
8- Même question en utilisant le mode multi-threadé. (0.5 pt)
Même réponse.
Nous voulons stocker l’historique de la communication CoAP dans une base de données distribuée.
9- Quels sont les changements qu'on devra apporter à l'interface CoAPInterface que vous avez proposé (question 7) ? (0.5 pt)
Aucun changement niveau interface
10- Quel sera le nombre de tiers dans ce cas? (0.5 pt)
3tiers
Bon courage
FAQ
Q1 : Qu'est-ce que CoAP ?
CoAP est un protocole de transfert Web spécialisé basé sur l'architecture REST, répondant aux exigences M2M (Machine to Machine) dans les environnements soumis à des contraintes.
Q2 : Quels sont les modèles de communication que prend en charge CoAP ?
CoAP prend en charge le modèle requête-réponse et l'architecture en publication-souscription en mode étendu.
Q3 : Comment CoAP gère-t-il la non-fiabilité de l’UDP ?
CoAP s’appuie sur une approche à deux couches, une couche de messagerie CoAP utilisée afin de traiter la non fiabilité d’UDP ainsi que la nature asynchrone des interactions (4 messages sont définis CON, ACK, NON, RST) et une couche d’interaction héritée du protocole http.