Définition
Protocole distribué qui coordonne un commit atomique entre plusieurs participants en séparant la décision en une phase de préparation (collecte des votes commit/abort) et une phase de commit (ordre de finalisation), visant à garantir l'atomicité d'une transaction distribuée.

Principe

Principe
Un coordinateur demande aux participants de se préparer et de persister leur état prêt ; si tous votent 'commit' le coordinateur ordonne le commit, sinon il ordonne l'abort. Des journaux durables et une récupération déterministe chez les participants sont nécessaires pour préserver la cohérence en cas de pannes.

Démonstration

Démonstration
Une transaction met à jour deux shards de base de données : le coordinateur envoie 'prepare' aux deux ; chaque shard écrit un enregistrement 'prepared' et répond 'yes' ; le coordinateur émet alors 'commit' et les deux shards rendent les changements durables et libèrent les verrous, garantissant que les deux valident ou que les deux annulent.

Mauvaise application

Mauvaise application
Employer la validation en deux phases sans journaux durables ou sans gérer la panne du coordinateur, s'attendre à ce qu'elle ne bloque pas, ou l'utiliser en présence fréquente de partitions réseau sans mesures de disponibilité — cela peut conduire à un blocage indéfini ou à l'absence de progression.

Conséquence

Conséquence
Sémantique de commit atomique forte entre participants (soit tous valident, soit tous annulent) au prix d'un possible blocage et d'un coût de coordination ; cela facilite le raisonnement sur la correction mais peut réduire la disponibilité en cas de pannes.

Inversion

Inversion
Approches optimistes ou par commit éventuel (par ex. cohérence éventuelle ou compensation) qui favorisent disponibilité et vivacité plutôt que commits atomiques globaux et acceptent des incohérences temporaires.

Limite

Limite
Assure une décision atomique quand les participants répondent et que l'état est persistant, mais ne garantit pas la progression en cas de panne du coordinateur (risque de blocage) et ne suffit pas à tolérer les partitions réseau ; des améliorations (3PC, commits basés sur le consensus) sont nécessaires pour des garanties sans blocage.

Tension sémantique

Tension sémantique
Coordination atomique et bloquante (2PC) versus protocoles de commit non bloquants basés sur le consensus (ou cohérence éventuelle) : compromis entre cohérence forte et disponibilité/vivacité dans les systèmes distribués.

Synthèse

Synthèse
Une poignée de main en deux étapes pilotée par un coordinateur — préparer puis committer — qui impose l'atomicité des transactions distribuées en exigeant des votes préparés unanimes et de la journalisation durable, échangeant potentiel blocage et coût de coordination contre la correction globale.