27
Projet Système Gestion de bases de données réparties LALUQUE Florian PERS Cyril ROSE Aurélien SAUJOT Steeven

Projet Système

  • Upload
    devona

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

Projet Système. Gestion de bases de données réparties. LALUQUE Florian PERS Cyril ROSE Aurélien SAUJOT Steeven. Plan. Sujet Choix techniques Format des messages et donnée Connexion des serveurs Répartition Client Superviseur Conclusion Démo. Sujet. - PowerPoint PPT Presentation

Citation preview

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