Comment l'algorithme PAXOS gère-t-il les défaillances partielles d'accepter les messages?

cs.stackexchange https://cs.stackexchange.com/questions/104890

  •  05-11-2019
  •  | 
  •  

Question

J'ai lu l'algorithme Paxos de base du papier "Paxos Made Simple". Je ne comprends pas comment l'algorithme Paxos conserve les propriétés de sécurité dans des défaillances partielles des messages d'acceptation, ce qui signifie que les cas où le proposant reçoit des réponses préparent une majorité, mais le message d'acceptation ultérieur n'atteint pas tous les accepteurs. Il me semble que cela pourrait entraîner une violation des propriétés de sécurité, où il n'y aura pas de majorité qui a convenu de la même valeur.

J'ai créé un exemple artificiel du cas d'utilisation auquel je pense. À chaque tour, le proposant envoie un message de préparation à la majorité des nœuds, obtient une réponse de chacun d'eux, mais le message d'accept n'arrive qu'à l'un d'eux (les autres se perdent). Plus précisément, comme indiqué dans l'image ci-dessous:

  • Au tour 1, le proposant envoie un message proposer (1). Les accepteurs n'ont pas encore reçu de message de préparation, ils répondent donc tous avec une promesse. Le proposant obtient une majorité dans la phase 1, envoie donc un message Accept (1, A). Ce message atteint le premier nœud qui l'accepte.
  • Au tour 2, le proposant envoie un message proposer (2) à une majorité, qui ne contient pas le nœud qui a accepté une valeur. En conséquence, la propose obtient une majorité et envoie un message Accept (2, B), qui n'atteint que le deuxième nœud.
  • Le tour 3 est similaire, où aucun des accepteurs sélectionnés au cours de la première phase n'a encore accepté de valeur. En conséquence, le proposant choisit une valeur et envoie un message Accept (3, C), qui n'atteint que le troisième nœud.
  • Au tour 4, la majorité doit contenir au moins l'un des accepteurs qui a accepté une valeur. Disons que c'est le premier nœud qui a accepté la valeur A, qui renvoie le numéro de la proposition (1) en réponse au message de préparation (4) envoyé par le proposant. Puisqu'il n'y a qu'une seule valeur acceptée, le proposant utilise celui-ci et envoie un message Accept (4, A), qui atteint le quatrième nœud.
  • Au tour 5, le proposant envoie un message proposer (5) à une majorité qui contient les 2 premiers nœuds, qui ont accepté les valeurs A et B. ils renvoient tous deux les numéros de proposition associés (1 et 2). Le proposant choisit la valeur correspondant au plus haut, B. Le proposant envoie ensuite un message Accept (5, B), qui n'atteint le cinquième nœud.

enter image description here

À ce stade, il n'y a aucun moyen de satisfaire la propriété de sécurité, car nous aurions besoin d'une majorité (6/2 + 1 = 4) d'accepteurs pour avoir accepté la même valeur.

Où est le défaut dans ma pensée?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top