intégration du protocole des trains à jgroups

35
Int´ egration du protocole des trains ` a JGroups St´ ephanie OUILLON Tiezhen WANG 30 janvier 2013

Upload: stephanie-ouillon

Post on 14-Jun-2015

157 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: Intégration du protocole des Trains à JGroups

Integration du protocole des trains a JGroups

Stephanie OUILLONTiezhen WANG

30 janvier 2013

Page 2: Intégration du protocole des Trains à JGroups

Premier arret : JGroups

2 of 35

Page 3: Intégration du protocole des Trains à JGroups

Premier arret : JGroups

3 of 35

Page 4: Intégration du protocole des Trains à JGroups

Destination : integrer le protocole des trains a JGroups

4 of 35

Page 5: Intégration du protocole des Trains à JGroups

Sommaire

Veuillez composter vos billets s’il vous plaıt

1. Introduction au protocole des trains

2. Conception d’une API Java

3. Integration du protocole a JGroups

4. Demonstration

5. Conclusion

5 of 35

Page 6: Intégration du protocole des Trains à JGroups

Introduction au protocole des trains

Tout le monde en voiture

� Le protocole des trains est un protocole de diffusion (broadcast) :� uniforme� totalement ordonne

� Il permet d’obtenir un debit optimal.

6 of 35

Page 7: Intégration du protocole des Trains à JGroups

Introduction au protocole des trains

Tout le monde en voiture

� Il est concu pour :� des petits clusters (16 machines maximum)� des messages courts

7 of 35

Page 8: Intégration du protocole des Trains à JGroups

Le principe du protocole

Le circuit

8 of 35

Page 9: Intégration du protocole des Trains à JGroups

Le principe du protocole

Envoi d’un message par #00

9 of 35

Page 10: Intégration du protocole des Trains à JGroups

Le principe du protocole

Diffusion du message - reception par #01

10 of 35

Page 11: Intégration du protocole des Trains à JGroups

Le principe du protocole

Suppression du wagon

11 of 35

Page 12: Intégration du protocole des Trains à JGroups

Le principe du protocole

Arrivee d’un nouveau processus

12 of 35

Page 13: Intégration du protocole des Trains à JGroups

Implementation du protocole des trains en langage C

Un fichier de configuration minimal

� Fichier addr file :0:localhost:20001:localhost:2001

13 of 35

Page 14: Intégration du protocole des Trains à JGroups

Implementation du protocole des trains en langage C

Un fichier de configuration minimal

Une interface simple

� Initialisation : trInit()

� Arret : trTerminate()

� Creation d’un message : newmsg()

� Diffusion d’un message : utoBroadcast()

� 3 structures : message, messageHeader, circuitView

14 of 35

Page 15: Intégration du protocole des Trains à JGroups

Pause au wagon-bar

Ou l’on doit faire du cafe

15 of 35

Page 16: Intégration du protocole des Trains à JGroups

Pause au wagon-bar

Ou l’on doit faire du cafe

16 of 35

Page 17: Intégration du protocole des Trains à JGroups

Pause au wagon-bar

Ou l’on doit faire du cafe

17 of 35

Page 18: Intégration du protocole des Trains à JGroups

Java Native Interface

18 of 35

Page 19: Intégration du protocole des Trains à JGroups

Java Native Interface

19 of 35

Page 20: Intégration du protocole des Trains à JGroups

Java Native Interface

Avantages

� Interagir avec du code natif (C/C++)� Acceder a des fonctions systemes� Gestion du hardware� Utilisation de librairies existantes� Gain en performance (?)

20 of 35

Page 21: Intégration du protocole des Trains à JGroups

Java Native Interface

Avantages

Inconvenients

� Portabilite dependante du code natif

� Debug au run time difficile pour le code natif� Gestion des vulnerabilite du code natif

� Gestion de la memoire

� Perte de performance

21 of 35

Page 22: Intégration du protocole des Trains à JGroups

22 of 35

Page 23: Intégration du protocole des Trains à JGroups

API Java : trains

23 of 35

Page 24: Intégration du protocole des Trains à JGroups

API Java : exemple

24 of 35

Page 25: Intégration du protocole des Trains à JGroups

Comparaison des performances

25 of 35

Page 26: Intégration du protocole des Trains à JGroups

Comparaison des performances

� 1 train

� 2 processus en localhost, diffuseurs

� taille des messages: 10 octets

� dure de la mesure: 10 secondes (warmup: 1s, cooldown: 1s)

� 1 ms de delai entre 2 envois de messages

26 of 35

Page 27: Intégration du protocole des Trains à JGroups

Breve introduction a JGroups

JGroups

� Intergiciel pour faire de la diffusion fiable

� Pile de protocoles flexible et configurable via un fichier

27 of 35

Page 28: Intégration du protocole des Trains à JGroups

Breve introduction a JGroups

JGroups

Fonctionalites

� Detection et notification de l’arrive et du depart des membres

� Detection et enlevement des membres ecrases

� Envoi et reception des message diffuse

� Envoi et reception des message point-a-point

� Transfert d’etat

28 of 35

Page 29: Intégration du protocole des Trains à JGroups

Breve introduction a JGroups

Architecture de la pile de protocoles

� FLUSH / STATE TRANSFER

� Fragmentation (FRAG)

� Controle de flux (UFC, MFC)

� Controle d’appartenance dans group (GMS)

� Transfert fiable (STABLE, UNICAST2, etc)

� Detection des echecs (FD SOCK, VERIFY SUSPECT, etc)

� Merge des sous-groupes (MERGE)

� Decouverte des membres (PING)

� Protocole de transfer (UDP, TCP)

29 of 35

Page 30: Intégration du protocole des Trains à JGroups

Integration a JGroups

Objectif

� Creation d’un protocole ”trains” dans JGroups

� Permettre aux utilisateurs de switcher sur le protocole des trainssans toucher a leur code.

30 of 35

Page 31: Intégration du protocole des Trains à JGroups

Integration a JGroups

Objectif

Fonctionalites

� Detection et notification de l’arrive et du depart des membres(pour les membres presents dans la liste)

� Envoi et reception des messages diffuses

� Transfert d’etat

Simplifications

� Detection et enlevement des membres ecrases

� Envoi et reception des messages point-a-point

31 of 35

Page 32: Intégration du protocole des Trains à JGroups

Integration a JGroups

Objectif

Fonctionalites

Simplification

Architecture de la pile de protocoles

� FLUSH / STATE TRANSFER

� Trains protocol

32 of 35

Page 33: Intégration du protocole des Trains à JGroups

Demonstration

33 of 35

Page 34: Intégration du protocole des Trains à JGroups

Bilan : terminus tout le monde descend

Objectifs atteints

� API Java avec JNI operationnelle

� Integration d’une brique protocolaire dans JGroups fonctionnelle

� Transfert d’etat en marche

34 of 35

Page 35: Intégration du protocole des Trains à JGroups

Bilan : terminus tout le monde descend

Objectifs atteints

Prochaines etapes

� Compatibilite du protocole avec Windows (et BSD ?)

� Calcul plus fin des performances

35 of 35