5. Sommaire
Veuillez composter vos billets s’il vous plaˆ
ıt
1. Introduction au protocole des trains
2. Conception d’une API Java
3. Int´gration du protocole ` JGroups
e a
4. D´monstration
e
5. Conclusion
5 of 35
6. Introduction au protocole des trains
Tout le monde en voiture
Le protocole des trains est un protocole de diffusion (broadcast) :
uniforme
totalement ordonn´
e
Il permet d’obtenir un d´bit optimal.
e
6 of 35
7. Introduction au protocole des trains
Tout le monde en voiture
Il est con¸u pour :
c
des petits clusters (16 machines maximum)
des messages courts
7 of 35
12. Le principe du protocole
Arriv´e d’un nouveau processus
e
12 of 35
13. Impl´mentation du protocole des trains en langage C
e
Un fichier de configuration minimal
Fichier addr file :
0:localhost:2000
1:localhost:2001
13 of 35
14. Impl´mentation du protocole des trains en langage C
e
Un fichier de configuration minimal
Une interface simple
Initialisation : trInit()
Arrˆt : trTerminate()
e
Cr´ation d’un message : newmsg()
e
Diffusion d’un message : utoBroadcast()
3 structures : message, messageHeader, circuitView
14 of 35
20. Java Native Interface
Avantages
Int´ragir avec du code natif (C/C++)
e
Acc´der ` des fonctions syst`mes
e a e
Gestion du hardware
Utilisation de librairies existantes
Gain en performance (?)
20 of 35
21. Java Native Interface
Avantages
Inconv´nients
e
Portabilit´ d´pendante du code natif
e e
Debug au run time difficile pour le code natif
Gestion des vuln´rabilit´ du code natif
e e
Gestion de la m´moire
e
Perte de performance
21 of 35
26. 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 d´lai entre 2 envois de messages
e
26 of 35
27. Br`ve introduction ` JGroups
e a
JGroups
Intergiciel pour faire de la diffusion fiable
Pile de protocoles flexible et configurable via un fichier
27 of 35
28. Br`ve introduction ` JGroups
e a
JGroups
Fonctionalit´s
e
D´tection et notification de l’arriv´ et du d´part des membres
e e e
D´tection et enl`vement des membres ´cras´s
e e e e
Envoi et r´ception des message diffus´
e e
Envoi et r´ception des message point-`-point
e a
Transfert d’´tat
e
28 of 35
29. Br`ve introduction ` JGroups
e a
Architecture de la pile de protocoles
FLUSH / STATE TRANSFER
Fragmentation (FRAG)
Contrˆle de flux (UFC, MFC)
o
Contrˆle d’appartenance dans group (GMS)
o
Transfert fiable (STABLE, UNICAST2, etc)
D´tection des ´ch`cs (FD SOCK, VERIFY SUSPECT, etc)
e e e
Merge des sous-groupes (MERGE)
D´couverte des membres (PING)
e
Protocole de transfer (UDP, TCP)
29 of 35
30. Int´gration ` JGroups
e a
Objectif
Cr´ation d’un protocole ”trains” dans JGroups
e
Permettre aux utilisateurs de switcher sur le protocole des trains
sans toucher ` leur code.
a
30 of 35
31. Int´gration ` JGroups
e a
Objectif
Fonctionalit´s
e
D´tection et notification de l’arriv´ et du d´part des membres
e e e
(pour les membres pr´sents dans la liste)
e
Envoi et r´ception des messages diffus´s
e e
Transfert d’´tat
e
Simplifications
D´tection et enl`vement des membres ´cras´s
e e e e
Envoi et r´ception des messages point-`-point
e a
31 of 35
32. Int´gration ` JGroups
e a
Objectif
Fonctionalit´s
e
Simplification
Architecture de la pile de protocoles
FLUSH / STATE TRANSFER
Trains protocol
32 of 35
34. Bilan : terminus tout le monde descend
Objectifs atteints
API Java avec JNI op´rationnelle
e
Int´gration d’une brique protocolaire dans JGroups fonctionnelle
e
Transfert d’´tat en marche
e
34 of 35
35. Bilan : terminus tout le monde descend
Objectifs atteints
Prochaines ´tapes
e
Compatibilit´ du protocole avec Windows (et BSD ?)
e
Calcul plus fin des performances
35 of 35