projet système
Post on 23-Feb-2016
44 Views
Preview:
DESCRIPTION
TRANSCRIPT
Projet SystèmeGestion de bases de données réparties
LALUQUE FlorianPERS CyrilROSE AurélienSAUJOT Steeven
PlanSujetChoix techniquesFormat des messages et
donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
SujetBase de données répartie tolérante aux pannes
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Choix techniques• Utilisation des sockets
• Utilisation des sémaphores
• Election d’un serveur-maitre
• XMLHTTPRequest pour requêtes client et superviseur
• Utilisation de JSON pour les messages
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Donnée
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Les messages• Une classe message contenant une map de string,
object
• Une méthode statique pour envoyer les messages
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Format des messages• Envoie du message connect d’un serveurs à un
autre:
• Emission:Message nouveau_message=new Message(new
HashMap<String,Object>()
{{ put("connect",port);}});
Message message = null;
message=(Message)getP().jsonToJava(input);
• Reception:
Message.envoyer_message(outcli, nouveau_message);
String input = in.nextLine();
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Connexion des serveurs• Utilisation d’un serveurs.properties pour qu’un
nouveau serveur est connaissance des serveurs potentiels du réseau
S3 : ServeurS3 : Client
S2 : ServeurS2 : Client
S1 : ServeurS1 : Client
Serveur hors-ligne
{‘’Connect’’ :S3
}{‘’Jesuis’’: S1}
• Un serveur possède :• Un thread principal• Autant de threads ( ServeurAction ) qu’il y’a
d’autres serveurs sur le réseau
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Répartition
• Evènements déclencheurs
• Etapes de la répartition
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionEvènements déclencheurs :
• Ajout d’une donnée• Nouveau serveur sur le réseau• Crash d’un serveur
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionElection d’un serveur-maitre
Serveur 1BD.size()=15
Serveur 2BD.size()=16
Serveur 3BD.size()=4
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionElection d’un serveur-maitre
Serveur 1BD.size()=15
Serveur 2BD.size()=16
Serveur 3BD.size()=4
SujetChoix techniques*Format des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionEnvoi de la table d’ID
Serveur 2
Serveur 3
ArrayList<1,3,4>
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionCréation d’une table d’occurrence
ID Serveur possédant la donnée
1 S1,S2,S32 S13 S2,S3
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionLecture de la table et envoi des instructionsTableEnvoi<Id,Serveur recepteur>
Serveur 1 Serveur 2 Serveur 3
ID Recept1 Serveur 23 Serveur 3
ID Recept2 Serveur 1
ID Recept1 Serveur 12 Serveur 1
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
RépartitionEchange des données
Serveur 1
Serveur 2
Serveur 3
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
ClientLes actions du clients :
• Ajouter une donnée• Sélectionner une donnée• Supprimer une donnée
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
ClientAjouter une donnée : JavaScript
Serveur.java
ClientWebAction.java
xhr.open(url)
url.contains(HTTP)
serv.AjouterDonnee()
JavaScriptresponText
url.contains(SELECT)
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
ClientSélectionner une donnée : JavaScript
Serveur.java
ClientWebAction.java
xhr.open(url)
url.contains(HTTP)
serv.GetDonnee(id)
JavaScriptresponText
url.contains(SELECT)
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
ClientSupprimer une donnée : JavaScript
Serveur.java
ClientWebAction.java
xhr.open(url)
url.contains(HTTP)
serv.SupDonnee(id)
JavaScriptresponText
url.contains(SELECT)
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Superviseur
• Connecter aux autres serveurs uniquement lorsqu’il y’a une requête
• Connaitre l’état des serveurs
• Voir la répartition sur les serveurs
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Superviseur
SUPERVISEUR
RECEPTION S2
INTERFACE
SERVEUR S1(donnée : id = 1)
ClientAction
SERVEUR S2(donnée : id = 2)
ClientAction
{rep_getID: donnée: id=1}
{rep_getID: not_exist}
{getIDFromSupervisor :1}
{getIDFromSupervisor :1}
Recherche de la donnée 1
RECEPTION S1
• Recherche de la donnée contenant l’id 1
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Superviseur Web• Connaitre l’état des serveurs
JavaScriptxhr.open(url, true)
Pour tous les serveurs
Si xhr.status = 200Serveur OK
Sinon Serveur Hors-ligne
=asynchrone
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Superviseur Web• Voir la répartition sur les serveurs
Pour tous les serveursxhr.open(url, true)
Serveur.java
SuperviseurWebAction.java
url.contains(HTTP)
serv.getBaseDonnee(id)url.contains(LISTE)
JavaScript
responText
SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo
Superviseur Web• Voir la répartition sur les serveurs
Pour tous les serveursxhr.open(url, true)
Serveur.java
SuperviseurWebAction.java
url.contains(HTTP)
serv.getBaseDonnee(id)url.contains(LISTE)
JavaScript
responText
SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo
ConclusionLe projet nous a permis :
• D’approfondir nos connaissances en java• D’utiliser les sockets• De gérer des accès concurrents
Démo
top related