Download - Projet Système

Transcript
Page 1: Projet Système

Projet SystèmeGestion de bases de données réparties

LALUQUE FlorianPERS CyrilROSE AurélienSAUJOT Steeven

Page 2: Projet Système

PlanSujetChoix techniquesFormat des messages et

donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo

Page 3: Projet Système

SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo

SujetBase de données répartie tolérante aux pannes

Page 4: Projet Système

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

Page 5: Projet Système

SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo

Donnée

Page 6: Projet Système

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

Page 7: Projet Système

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();

Page 8: Projet Système

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

Page 9: Projet Système

SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo

Répartition

• Evènements déclencheurs

• Etapes de la répartition

Page 10: Projet Système

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

Page 11: Projet Système

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

Page 12: Projet Système

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

Page 13: Projet Système

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>

Page 14: Projet Système

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

Page 15: Projet Système

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

Page 16: Projet Système

SujetChoix techniquesFormat des messages et donnéeConnexion des serveursRépartitionClientSuperviseurConclusionDémo

RépartitionEchange des données

Serveur 1

Serveur 2

Serveur 3

Page 17: Projet Système

SujetChoix techniquesConnexion des serveursRépartitionClientSuperviseurConclusionDémo

ClientLes actions du clients :

• Ajouter une donnée• Sélectionner une donnée• Supprimer une donnée

Page 18: Projet Système

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)

Page 19: Projet Système

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)

Page 20: Projet Système

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)

Page 21: Projet Système

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

Page 22: Projet Système

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

Page 23: Projet Système

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

Page 24: Projet Système

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

Page 25: Projet Système

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

Page 26: Projet Système

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

Page 27: Projet Système

Démo


Top Related