Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Le modele standardLes protocoles de communication
Description des algorithmes
Systemes repartisModele standard et principes algorithmiques
Gerard Padiou
Departement Informatique et Mathematiques appliqueesENSEEIHT
8 octobre 2012
Gerard Padiou Systemes repartis 1 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Plan
1 Le modele standardApproche evenementielleCausaliteAbstraction d’un calcul
2 Les protocoles de communicationProtocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
3 Description des algorithmesDescription du comportement des processusAlgorithme d’electionArbre de recouvrement
Gerard Padiou Systemes repartis 3 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Vision statique : Graphe de processus
Description graphique
Sommets ≡ processus
Arcs ≡ liaisons de communication
c5
P1
P2
P3 P4
c1
c2c3
c4
Gerard Padiou Systemes repartis 4 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Proprietes
Proprietes des processus
Un processus possede une identite unique ;
Un processus possede un etat remanent ;
Un processus execute un code sequentiellement ;
Un processus n’a qu’une connaissance partielle des autres ;
Un processus peut communiquer avec un voisinage.
Pas de panne (par arret ou comportement byzantin).
Proprietes du reseau
Multiples parametres : point a point ou diffusion,(a)synchrone, fiable, delais bornes, etc
Messages : ni duplication ni erreur ;
Gerard Padiou Systemes repartis 5 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Connaissances d’un processus
Environnement
Processus
Nombre de processus ?
Voisinage de communication ?
Structure du reseau : maille, anneau, statique/dynamique, etc
Gerard Padiou Systemes repartis 6 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Vision dynamique : Chronogramme
Representation evenementielle
3 types d’evenements : emission, reception, interne ;
Mise en evidence de la causalite.
0
e1 r2 e3 e4
i1
e2r1
e’
t
P1
P2
P3
P4
Gerard Padiou Systemes repartis 7 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Definition de la relation de causalite (Lamport & Fidge)
Traduit l’ordre partiel entre evenements
L’emission d’un message precede causalement sa reception ;
Tous les evenements d’un processus sont totalement ordonnes ;
Transitivite : ∀e, e ′, e ′′ : e ≺ e ′ ≺ e ′′ ⇒ e ≺ e ′′
Exemple
m1
a1 a2 a3 a4 a5
b1
b2
b3 b4
A
B
Cc2 c3c1
m3
m4
c4
m5
m2
a1 ≺ a2 ≺ . . . mais aussi a1 ≺ c1, c2 ≺ a4, b4,≺ c4
Gerard Padiou Systemes repartis 8 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Approche evenementielleCausaliteAbstraction d’un calcul
Abstraction d’un calcul reparti
Executions causalement equivalentes
m1
a1 a2 a3 a4 a5
b1
b2
b3 b4
A
B
Cc2 c3c1
m3
m4
c4
m5
m2
Ensemble d’evenements + relation causale → ensembled’executions reelles equivalentes ;
a1; b1; c1; a2; . . . ≡ a1; a2; c1; b1; . . .a1; c1; a2; . . . 6≡ c1; a1; a2; . . . car a1 ≺ c1
Le choix des evenements fixe un niveau d’observation.
Gerard Padiou Systemes repartis 9 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Plan
1 Le modele standardApproche evenementielleCausaliteAbstraction d’un calcul
2 Les protocoles de communicationProtocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
3 Description des algorithmesDescription du comportement des processusAlgorithme d’electionArbre de recouvrement
Gerard Padiou Systemes repartis 10 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Protocole causalement ordonne
Objectif : Mettre de l’ordre . . .
Receptions incoherentes par rapport aux emissions
t0
P3
P2
P1e1 e
re2
r2 r1
m
m1 m2
r2 ≺ r1 alors que e1 ≺ e2
+ notion de delivrance 6= reception ;
Gerard Padiou Systemes repartis 11 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Protocole de diffusion
Beaucoup d’imprevus . . .
Diffusion vers un groupe de destinataires
m2
0
P3
P2
P1
t
m1
m3
Gerard Padiou Systemes repartis 12 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Diffusion anarchique
Diffusion vers le groupe G = {S1,S2,S3}
Groupe de processus destinataires d’une requete {S1,S2,S3}Replication des requetes des clients Cl1 et Cl2
d’un groupe
S3
S2
S1
Cl2
Cl1
Frontière
Gerard Padiou Systemes repartis 13 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Diffusion virtuellement synchrone
Meme ordre de consommation des messages
Atomicite des diffusions ;
Reconfiguration coherente.
Cl1
S3
S2
S1
Cl2
Gerard Padiou Systemes repartis 14 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Notion de vague : iteration repartieMichel Raynal
Operations sur une vague
class Vague {
Enqueter (Object Quoi ) ;
/* lance une nouvelle vague */
Visiter (Object Quoi, Collecte) ;
/* passage d’une vague sur un site */
Faire_Suivre(Object Quoi, Collecte) ;
/* propagation de la vague par un site */
Collecte Collecter() ;
/* collecte des resultats et fin de la vague */
}
Gerard Padiou Systemes repartis 15 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Protocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
Notion de vague : iteration repartie
Observateur
S1
S2
S3
S4
Enquêteri Enquêter(i+1)Collecteri Collecter(i+1)
Faire_suivrei Faire_suivre(i+1)
Visiter(i+1)
Visiteri
Visiteri
Visiter(i+1)
vaguei vague(i+1)
Gerard Padiou Systemes repartis 16 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Plan
1 Le modele standardApproche evenementielleCausaliteAbstraction d’un calcul
2 Les protocoles de communicationProtocole causalement ordonneProtocoles de diffusionSynchronisme virtuelStructure de controle repartie
3 Description des algorithmesDescription du comportement des processusAlgorithme d’electionArbre de recouvrement
Gerard Padiou Systemes repartis 17 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Principes algorithmiques
Algorithmes symetriques
code replique,donnees initiales propres : identite, voisinage decommunication.
Structurer les echanges de messages :
Utilisation de reseaux en anneau ;Utilisation de la structure d’arbre.
Etudier des problemes generiques :
Les services : datation, exclusion mutuelle, consensus, election,etc ;Les observations de proprietes stables : terminaison,interblocage ;La tolerance aux fautes : replication, atomicite.
Gerard Padiou Systemes repartis 18 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Description des algorithmesPrincipe des commandes gardees (E.W. Dijkstra)
process P(i :0..N-1) {
type Etat = { <Definition des etats possibles> } ;
Etat EtatCourant= Init ;
<Declaration de variables locales>
<Action d’initialisation>
while (<Condition>) {
select {
[when <Condition-1> ⇒] {[receive M-1(<params-1>) ;] <Action-1>}
[]...
[][when <Condition-p> ⇒] {[receive M-p(<params-p>) ;] <Action-M>}
} // select
} // while
}
Choix d’une action : garde vraie et message a consommer le plus ancien
Pour un envoi : send M(<args>) to <destinataire(s)>
Gerard Padiou Systemes repartis 19 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Election
Le probleme de l’election
Objectif : Elire un seul processus
bachmozart
grieg
berlioz
vivaldiverdi
Un processus a une identite unique qu’il connaıt ;
Un processus ne connaıt pas le nombre global de processus ;
Un processus ne connaıt pas l’identite des autres ;
Communication sur un anneau.
Gerard Padiou Systemes repartis 20 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Solution correcte ou fausse ?
+ On suppose que les processus sont totalement ordonnes (ici parleur indice, en pratique, par leur adresse IP par exemple)
process P(i :0..N-1) {
// et ⊕ : operateurs modulo Ntype Etat = {candidat,elu} ;
Etat EtatCourant=candidat ;
int qui ;
while (EtatCourant == candidat) {
receive Candidat(qui) from P[i1] ;if(qui < i) send Candidat(qui) to P[i⊕1];else if(qui == i) EtatCourant = elu;
}
}
Gerard Padiou Systemes repartis 21 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Solution qui conduit a l’election (du + petit)
process P(i :0..N-1) {
type Etat = {candidat,elu} ;
Etat EtatCourant=candidat ;
int qui;
send Candidat(i) to P[i⊕1] ; /* chacun candidate */
while (EtatCourant == candidat) {
receive Candidat(qui) from P[i1] ;if(qui < i) send Candidat(qui) to P[i⊕1];else if(qui == i) EtatCourant = elu;
}
Pas parfait : un seul processus se termine . . .
Gerard Padiou Systemes repartis 22 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Solution plus complete (tous les processus s’arretent)
process P(i :0..N-1) {
type Etat = {candidat,elu,perdant} ;
Etat EtatCourant=candidat ;
int qui ; int gagnant ;
send Candidat(i) to P[i⊕1]; /* chacun candidate */
while (EtatCourant == candidat) {
select {
receive Candidat(qui) from P[i1] ;if(qui < i) send Candidat(qui) to P[i⊕1];else if(qui == i) EtatCourant = elu;
[]receive Elu(gagnant) from P[i1] ;EtatCourant=perdant; send Elu(gagnant) to P[i⊕1];} // select
} // textitwhile
if (EtatCourant==elu) {
send Elu(i) to P[i⊕1]; receive Elu(gagnant) from P[i1] ;}
}
Gerard Padiou Systemes repartis 23 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Construction d’un arbre de recouvrement
Objectif : structurer la communication grace a la notion d’arbre
Un processus connaıt ses voisins ;
Un processus decide de construire un arbre dont il est racine ;
Les autres processus participent a la construction≡ « se placent dans l’arbre »
Gerard Padiou Systemes repartis 24 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Parcours en profondeur (sequentiel)
S1S3
S2
S4
S5
S6
S1
S2
S3
S4
S5
S61
1 4 4
663
null3
32
null
3
352
3 6null
64
Gerard Padiou Systemes repartis 25 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Parcours en largeur (en parallele)
S1S3
S2
S4
S5
S6
S1
S2S3S4
S5S61
1 4 4
1
1
3
41
132
33null
6
5
null
Gerard Padiou Systemes repartis 26 / 27
Le modele standardLes protocoles de communication
Description des algorithmes
Description du comportement des processusAlgorithme d’electionArbre de recouvrement
Construction d’un arbre de recouvrementEt si l’on utilisait l’appel procedural a distance . . .
public class Noeud {
private Noeud pere = null ;
public List <Noeud> voisins ;
private List<Noeud> fils = new ArrayList<Noeud>();
// Place le noeud this et propage le calcul
public Noeud parcourir ( Noeud appelant ) {
if (pere != null) return null ; // Deja place
pere = appelant; // Placement
for (Noeud v : voisins) { // Recherche des fils
if (v.parcourir (this) == v) fils.add(v);
}
return this ;
}
}Gerard Padiou Systemes repartis 27 / 27