Université Joseph Fourier 23/04/2014
Outline 1 2
Types de communication message envoyé à un groupe de processus Broadcast (diffusion) message envoyé à tous les processus du systèmes Unicast message envoyé à un seul processus
Applications du multicast Bases de données Clé/Valeurs (ex: Apache Cassandra) répliquées sur plusieurs serveurs lectures/écritures transmises à tous les réplicas Résultats de tournois sportifs diffusion aux clients Bourse brokers d une salle de marché
Propriétés d ordre Ordre dans lequel les messages arrivent au processus du groupe Trois types courants FIFO causal total
FIFO Définition Si P i diffuse m puis m, chaque processus destinataire recevra m avant m Exemple : M1-1 M2-2 P1 P2 M3-1 P3 P3 L ordre de réception des messages de M3:1 et M1:2 non spécifié
causal Définition si l évènement P i diffuse m précède causalement P j diffuse m,chaque processus destinataire recevra m avant m. Exemple : M1-1 P1 M3-1 M2-2 P2 P3 P3 Applications : newsgroups, twitter...
Propriétés causal = multicast FIFO Réciproque fausse
total (ou atomique) Définition Si P i reçoit m avant m (pas forcément du même émetteur), tous les autres destinataires reçoivent les deux messages dans le même ordre Exemple : M1-1 P1 P2 M3-1 P3 P3
Propriétés Propriété d ordre total indépendante de FIFO ou causal. Variantes : total/fifo, total/causal
Terminologie Dans la littérature anglophone, on lit par exemple: If a correct process P delivers message m before m, then any other process P that delivers m would already have delivered m. Que signifie deliver? livrer? recevoir? En général, pour implémenter des contraintes d ordre, on utilise un protocole. Exemple : A FIFO Link FIFO B Convention: A delivers m = A reçoit m via la couche protocole.
Outline 1 2
On s intéresse aux propriétés d ordre Topologie n processus P 1,...P n Graphe complet canaux fiables mais pas forcément FIFO Si graphe non complet? Une couche de protocole réalise l ordre, l autre la diffusion utilisation d AST / algorithmes probablistes de type épidémie / rumeurs
FIFO : structures de données (Remarque : Si les canaux sont FIFO, facile!) Messages annotées par des numéros de séquence Chaque P i maintient un tableau d entiers, seq[1..n] Initialement {0,..., 0} seq[j] contient le dernier numéro de séquence reçu par P i de P j seq[i] contient le dernier numéro de séquence envoyé par P i
FIFO : comportement Emetteur P i incrémente seq[i] envoie message <m, seq[i]> a tous les destinataires Recepteur P j reçoit <m, sn> de P i si sn == seq[j] + 1, passe le message à l application ( delivers ), incrémente seq[j] sinon, message stocké dans un buffer
total un processus du groupe est élu séquenceur S Emetteur P i envoie message m à tous les destinataires (y compris S) Séquencer S maintient un compteur seq initialement 0 Après réception d un message m, incrémente seq et multicast <m, seq> Récepteur P j maintient un compteur c j, initialement 0 (numéro du dernier message reçu) Lors d une réception d un message m, message mis en attente (dans buffer) jusqu à ce que 1. P j reçoit un message <m, seq> de S 2. seq == c j + 1 Quand ces conditions sont satisfaites, message retransmis à l application ( delivery ), et incrémentation de c j.
causal : structures de données Similaire au multicast FIFO Messages annotés par des numéros de séquence Chaque P i maintient un tableau d entiers, seq_i[1..n] Initialement {0,..., 0} seq_i[j] contient le dernier numéro de séquence reçu par P i de P j seq_i[i] contient le dernier numéro de séquence envoyé par P i
causal : comportement Emetteur P i incrémente seq[i] envoie message <m, seq[1..n]> à tous les destinataires Recepteur P i reçoit <m, V[1..n]> de P j, met le message en attente jusqu à ce que : 1. V [j] == seq i [j] + 1 (ce message est celui attendu par P i de P j ) 2. condition de causalité : pour tout k j, V [k] seq i [k] Quand 1 et 2 sont vérifiés, seq i [j] = V [j]