Distributed Systems 7.1: Two-phase commit

Martin Kleppmann
28 Oct 202018:45

Summary

TLDRDans ce cours sur les systèmes distribués, l'accent est mis sur la cohérence des répliques. Le professeur explore diverses formes de cohérence, notamment la cohérence des transactions distribuées et le problème de l'engagement atomique. La solution à ce problème est le protocole de commit en deux phases, qui garantit que les transactions soient soit entièrement validées, soit annulées en cas de panne. Une variante plus tolérante aux pannes de ce protocole utilise un algorithme de diffusion ordonnée totale pour gérer les votes des répliques, assurant ainsi une prise de décision cohérente même en cas de défaillance d'un nœud.

Takeaways

  • 😀 La cohérence est un concept vaste et complexe dans les systèmes distribués, avec de nombreuses définitions selon le contexte.
  • 😀 En base de données, la cohérence dans les transactions ACID signifie que l'état de la base respecte des invariants ou des contraintes définies, comme une règle stipulant qu'un cours doit toujours avoir un enseignant si un étudiant est inscrit.
  • 😀 La cohérence de réplication fait référence à l'état de deux répliques d'une base de données, mais la question clé est : quand doivent-elles être cohérentes ?
  • 😀 La cohérence 'lecture après écriture' signifie qu'un client devrait être capable de lire immédiatement après avoir effectué une écriture, et voir ce qu'il vient de rédiger.
  • 😀 Les transactions distribuées nécessitent d'assurer l'atomicité sur plusieurs nœuds d'un système distribué, ce qui garantit que toutes les modifications apportées à la base de données sont appliquées ou aucune ne l'est.
  • 😀 Le problème de l'engagement atomique dans les systèmes distribués consiste à s'assurer que toutes les parties d'une transaction, exécutées sur différents nœuds, soit toutes réussissent, soit toutes échouent.
  • 😀 L'engagement atomique, bien que similaire à un algorithme de consensus, est plus strict, exigeant que tous les nœuds s'accordent sur l'engagement ou l'annulation de la transaction, sans possibilité de compromis.
  • 😀 Un algorithme de consensus comme Raft peut tolérer des nœuds défaillants et continuer à fonctionner, contrairement à l'engagement atomique qui nécessite que tous les nœuds soient opérationnels pour réussir.
  • 😀 Le protocole d'engagement atomique le plus courant est le commit en deux phases (2PC), où un coordinateur envoie un message de préparation aux nœuds, et la transaction ne se termine que si tous les nœuds sont prêts à s'engager.
  • 😀 Si le coordinateur d'un engagement atomique plante, la transaction est annulée, mais un mécanisme de reprise permet au coordinateur de récupérer son état et de garantir que l'état de la transaction est respecté, même après un redémarrage.
  • 😀 Le défi majeur du 2PC est le blocage potentiel lorsque le coordinateur plante avant de décider si la transaction doit être engagée ou annulée. Cependant, l'utilisation de la diffusion d'ordre total peut résoudre ce problème en garantissant que tous les nœuds prennent la même décision, même en cas de pannes.

Q & A

  • Qu'est-ce que la consistance des répliques dans les systèmes distribués ?

    -La consistance des répliques fait référence à la situation où plusieurs copies d'un même ensemble de données sont mises à jour de manière coordonnée pour garantir que toutes les répliques restent dans un état cohérent. Cela implique de s'assurer que les modifications sont correctement propagées et visibles sur toutes les répliques.

  • Pourquoi le mot 'consistance' peut être difficile à définir dans le contexte des systèmes distribués ?

    -Le mot 'consistance' peut être difficile à définir car il a plusieurs significations selon le contexte. Par exemple, il peut faire référence à la consistance des transactions ACID dans les bases de données ou à la consistance des répliques dans les systèmes distribués, où il peut signifier que les répliques doivent être synchronisées, mais pas nécessairement en même temps.

  • Quelle est la différence entre la consistance des transactions ACID et la consistance dans les systèmes distribués ?

    -La consistance ACID dans les bases de données concerne l'état d'une base de données après une transaction, garantissant que les invariants ou contraintes de l'application sont respectés. En revanche, dans les systèmes distribués, la consistance fait souvent référence à la synchronisation des répliques, où il peut être question de savoir quand et comment elles doivent être cohérentes.

  • Que signifie la consistance 'lecture après écriture' dans le contexte des systèmes distribués ?

    -La consistance 'lecture après écriture' signifie que lorsqu'un client effectue une écriture, il devrait pouvoir immédiatement lire la valeur qu'il vient de modifier, garantissant que la lecture reflète toujours la dernière écriture effectuée, sans inconsistance entre les répliques.

  • Qu'est-ce que le problème de l'engagement atomique dans les systèmes distribués ?

    -Le problème de l'engagement atomique se pose lorsqu'une transaction impliquant plusieurs nœuds dans un système distribué doit être exécutée de manière cohérente. Si un nœud échoue, tous les autres nœuds doivent être informés pour qu'ils annulent également la transaction, évitant ainsi un état incohérent.

  • Comment la méthode de commit atomique diffère-t-elle de l'algorithme de consensus ?

    -La commit atomique et l'algorithme de consensus sont similaires en ce sens qu'ils impliquent un accord entre plusieurs nœuds, mais la commit atomique nécessite une décision binaire très stricte : tous les nœuds doivent accepter de commettre ou d'abandonner la transaction. Contrairement à cela, un algorithme de consensus comme le raft peut tolérer certains nœuds défectueux et toujours parvenir à une décision, même avec une majorité de nœuds défaillants.

  • En quoi consiste l'algorithme du commit à deux phases (2PC) ?

    -L'algorithme du commit à deux phases consiste en deux étapes : dans la première phase, le coordinateur envoie un message de préparation à tous les nœuds participants pour vérifier qu'ils sont prêts à engager la transaction. Dans la deuxième phase, si tous les nœuds répondent positivement, la transaction est engagée, sinon elle est abandonnée.

  • Que se passe-t-il si le coordinateur échoue pendant l'exécution de l'algorithme 2PC ?

    -Si le coordinateur échoue, il peut récupérer l'état de la transaction à partir de l'enregistrement sur disque. En cas d'absence de décision, le coordinateur peut annuler la transaction. Toutefois, si une décision a été prise avant l'échec, elle doit être respectée et communiquée aux nœuds pour garantir la cohérence de l'ensemble du système.

  • Quel est le rôle de la diffusion ordonnée totale dans l'amélioration de l'algorithme 2PC ?

    -La diffusion ordonnée totale permet de résoudre le problème lié aux nœuds qui échouent pendant le processus 2PC. Elle garantit que tous les nœuds participants reçoivent les mêmes messages dans le même ordre, ce qui évite les conflits de votes en cas de nœuds défaillants et permet de prendre une décision cohérente sur le commit ou l'abandon de la transaction.

  • Comment l'algorithme 2PC gère-t-il les défaillances des répliques dans un système distribué ?

    -L'algorithme 2PC gère les défaillances des répliques en s'appuyant sur un détecteur de défaillance. Si une réplique échoue à répondre à une demande de vote, un autre nœud peut voter en son nom. Cela permet d'éviter que l'algorithme soit bloqué en cas de défaillance, tout en maintenant la cohérence du système.

Outlines

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Mindmap

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Keywords

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Highlights

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now

Transcripts

plate

This section is available to paid users only. Please upgrade to access this part.

Upgrade Now
Rate This

5.0 / 5 (0 votes)

Related Tags
Systèmes distribuésCohérenceRéplicasTransactionsProtocoleValidationDeux phasesAtomicitéCrashs de nœudsAlgorithmeSystèmes complexes
Do you need a summary in English?