projet système gestion de bases de données réparties laluque florian pers cyril rose aurélien...

Post on 04-Apr-2015

114 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

LALUQUE FlorianPERS CyrilROSE AurélienSAUJOT Steeven

PlanSujet

Choix techniques

Format des messages et donnée

Connexion des serveurs

Répartition

Client

Superviseur

Conclusion

Démo

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

Sujet

Base 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 : Serveur

S3 : Client

S2 : Serveur

S2 : Client

S1 : Serveur

S1 : 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épartition

Evè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,S3

2 S1

3 S2,S3

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

RépartitionLecture de la table et envoi des

instructions

TableEnvoi<Id,Serveur recepteur>Serveur 1 Serveur 2 Serveur 3

ID Recept

1 Serveur 2

3 Serveur 3

ID Recept

2 Serveur 1

ID Recept

1 Serveur 1

2 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

Client

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

JavaScript

responText

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)

JavaScript

responText

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)

JavaScript

responText

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 serveurs

xhr.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 serveurs

xhr.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

Conclusion

Le 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