Introduction
Les systèmes de quorums sont des
constructions bien connus qui permettent
d’améliorer les performances et la
disponibilité des systèmes distribués.
Ils ont été employés pour mettre en
application beaucoup de problèmes de
coordination dans les systèmes répartis
tels que l’exclusion mutuelle.
1 / 15
Définition
Un système de quorum Q sur un
univers U est un ensemble sur U tel que
pour tout Qi, Qj ∈ Q, la propriété
d’intersection Qi ∩ Qj ≠ ∅ est vérifiée.
2 / 15
Algorithme de Maekawa
L'algorithme de Maekawa est un
algorithme d'exclusion mutuelle sur un
système distribué.
Dans cet algorithme, chaque composant
appelé «site» ne peut donner de
permission d'entrée dans une section
critique qu'à un seul autre composant à
la fois.
4 / 15
Chaque site a la charge d'arbitrer les
éventuels conflits qui apparaîtront entre
différents autres sites.
Cela impose au participant à qui cette
permission a été donnée de rendre la
main sur la section critique une fois qu'il
a fini son travail, c'est-à-dire lorsqu'il
sort de sa section critique.
5 / 15
Types de messages
Les types de messages échangés lors de
l'exécution de l'algorithme sont:
DEMANDE: un message de demande
d'entrée en section critique.
ACCORD: un message d'acceptation
d'entrée en section critique.
ÉCHEC: un message de refus d'entrée en
section critique.
6 / 15
SONDAGE: un message envoyé pour
résoudre les problèmes d’interblocage.
RESTITUTION: une réponse à un
message SONDAGE.
LIBÉRATION: un message de sortie de
section critique.
7 / 15
Algorithme
Site demandeur: Un site Pi demandant
envoie un message de demande (ts, i) à
tous les sites dans son quorum Ri.
Site receveur: Lors de la réception d'un
message de demande (ts, i), le site de
réception Pj:
8 / 15
Si le site Pj n'a pas un accord en cours (c'est-à-dire, un
message d'accord qui n'a pas été relâché), alors le site Pj
envoie un message d'accord (j) sur le site Pi.
Si le site Pj a un accord en cours pour un processus avec une
priorité plus élevée que la demande, alors le site Pj envoie
un message d'échec (j) sur le site Pi et Pj ajoute à sa file
d'attente la demande du site Pi.
Si le site Pj a un accord en cours pour un processus avec une
priorité inférieure à la demande, alors le site Pj envoie un
message de sondage (j) au processus qui est actuellement
autorisé à accéder à la section critique par le site Pj (c'est-à-
dire le site avec le message d'accord en cours).
9 / 15
Lors de la réception d'un message de
sondage (j), le site Pk:
Envoie un message de restitution (k) sur
le site Pj si et seulement si le site Pk a
reçu un message d'échec d'un autre site,
ou si Pk a envoyé un message de
restitution à un autre site, mais n'a pas
reçu un nouvel accord.
10 / 15
Lors de la réception d'un message de
restitution (k), le site Pj:
Envoie un message d'accord à la
première demande de sa file d'attente.
Notez que les requêtes au sommet sont
celles de plus haute priorité.
Place Pk dans sa file d'attente.
11 / 15
Lors de la réception d'un message de
libération (i), le site Pj:
Supprime Pi de sa file d'attente.
Envoie un message d'accord à la
première demande de sa file d'attente.
12 / 15
Section critique:
Un site Pi entre dans la section critique
lorsqu'il reçoit un message d'accord de
tous les sites du quorum Ri.
A la sortie de la section critique, Pi
envoie un message de libération (i) à
tous les sites de Ri.
13 / 15
Quorum: Un quorum doit respecter les
propriétés suivantes:
∀i, j ∈ 1. . N , Ri ∩ Rj ≠ ∅
∀i ∈ 1. . N , Pi ∈ Ri
∀i ∈ 1. . N , |Ri| = K
Le site Pi est contenu dans exactement K
ensembles de requêtes ce qui implique:
|Ri| ≥ N − 1
14 / 15
Conclusion
La complexité de l'algorithme de Maekawa
en fonction du nombre de messages sur le
réseau est en O( 𝑁 ) mais le problème de
cette approche est la complexité de
construction des quorums qui rend difficile
sa mise en œuvre sur un système composé
d'un grand nombre de sites.
15 / 15