Protocole de validation en trois phases - Three-phase commit protocol

Dans les réseaux informatiques et les bases de données , le protocole de validation en trois phases ( 3PC ) est un algorithme distribué qui permet à tous les nœuds d'un système distribué d' accepter de valider une transaction . Il s'agit d'un raffinement plus résilient aux défaillances du protocole de validation en deux phases (2PC).

Motivation

Un protocole d' engagement à deux phases ne peut pas récupérer de manière fiable en cas d'échec à la fois du coordinateur et un élément de génération au cours de la phase de validation . Si seulement le coordinateur avait échoué et qu'aucun membre de la cohorte n'avait reçu de message de validation, on pouvait en déduire sans risque qu'aucune validation n'avait eu lieu. Si, toutefois, à la fois le coordinateur et un membre de la cohorte ont échoué, il est possible que le membre de la cohorte en échec ait été le premier à être informé et ait effectivement effectué la validation. Même si un nouveau coordinateur est sélectionné, il ne peut pas poursuivre l'opération en toute confiance tant qu'il n'a pas reçu l'accord de tous les membres de la cohorte, et doit donc bloquer jusqu'à ce que tous les membres de la cohorte répondent.

Le protocole de validation en trois phases élimine ce problème en introduisant l'état Préparé pour la validation. Si le coordinateur échoue avant d'envoyer des messages preCommit, la cohorte conviendra à l'unanimité que l'opération a été abandonnée. Le coordonnateur ne sera pas envoyer un message doCommit jusqu'à ce que tous les membres de la cohorte ont ACK é qu'ils sont prêts à s'engager . Cela élimine la possibilité qu'un membre de la cohorte ait effectivement terminé la transaction avant que tous les membres de la cohorte ne soient au courant de la décision de le faire (une ambiguïté qui a nécessité un blocage indéfini dans le protocole de validation en deux phases ).

Solution

La phase de pré-commit introduite ci-dessus aide le système à récupérer lorsqu'un participant ou à la fois le coordinateur et un participant ont échoué pendant la phase de commit. Lorsque le coordinateur de récupération prend le relais après l'échec du coordinateur au cours d'une phase de validation de commit en deux phases , le nouveau pré-commit est pratique comme suit : lors de l'interrogation des participants, s'il apprend que certains nœuds sont en phase de validation, il suppose que le précédent coordinateur avant de planter a pris la décision de s'engager. Par conséquent, il peut guider le protocole pour s'engager. De même, si un participant déclare qu'il n'a pas reçu de message PrepareToCommit, le nouveau coordinateur peut supposer que le coordinateur précédent a échoué avant même d'avoir terminé la phase PrepareToCommit. Par conséquent, il peut supposer en toute sécurité qu'aucun participant n'a validé les modifications, et donc abandonner en toute sécurité la transaction.

Rallonges

En utilisant le protocole de validation en trois phases d'origine de Skeen, il est possible qu'un quorum se connecte sans pouvoir progresser (ce n'est pas une situation de blocage ; le système continuera de progresser si le partitionnement du réseau est résolu). L'E3PC de Keidar et Dolev affine le protocole de validation en trois phases de Skeen et résout ce problème d'une manière qui permet * toujours * au quorum de progresser.

Désavantages

La validation en trois phases suppose un réseau avec un délai limité et des nœuds avec des temps de réponse limités ; Dans la plupart des systèmes pratiques avec un délai de réseau illimité et des pauses de processus, il ne peut pas garantir l'atomicité. L'autre inconvénient du protocole est qu'il nécessite au moins trois allers-retours pour terminer, nécessitant un minimum de trois temps d'aller-retour (RTT). Il s'agit potentiellement d'une longue latence pour terminer chaque transaction.

Les références

Voir également