intégration du protocole des trains à jgroups
TRANSCRIPT
Integration du protocole des trains a JGroups
Stephanie OUILLONTiezhen WANG
30 janvier 2013
Premier arret : JGroups
2 of 35
Premier arret : JGroups
3 of 35
Destination : integrer le protocole des trains a JGroups
4 of 35
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
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
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
Le principe du protocole
Le circuit
8 of 35
Le principe du protocole
Envoi d’un message par #00
9 of 35
Le principe du protocole
Diffusion du message - reception par #01
10 of 35
Le principe du protocole
Suppression du wagon
11 of 35
Le principe du protocole
Arrivee d’un nouveau processus
12 of 35
Implementation du protocole des trains en langage C
Un fichier de configuration minimal
� Fichier addr file :0:localhost:20001:localhost:2001
13 of 35
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
Pause au wagon-bar
Ou l’on doit faire du cafe
15 of 35
Pause au wagon-bar
Ou l’on doit faire du cafe
16 of 35
Pause au wagon-bar
Ou l’on doit faire du cafe
17 of 35
Java Native Interface
18 of 35
Java Native Interface
19 of 35
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
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
22 of 35
API Java : trains
23 of 35
API Java : exemple
24 of 35
Comparaison des performances
25 of 35
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
Breve introduction a JGroups
JGroups
� Intergiciel pour faire de la diffusion fiable
� Pile de protocoles flexible et configurable via un fichier
27 of 35
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
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
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
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
Integration a JGroups
Objectif
Fonctionalites
Simplification
Architecture de la pile de protocoles
� FLUSH / STATE TRANSFER
� Trains protocol
32 of 35
Demonstration
33 of 35
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
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