Definición
Protocolo distribuido que coordina un commit atómico entre varios participantes dividiendo la decisión en una fase de preparación (recoger votos de commit/abort) y una fase de commit (indicar a los participantes que finalicen), con el objetivo de garantizar la atomicidad de una transacción distribuida.

Principio

Principio
Un coordinador solicita a los participantes que se preparen y persistan su disposición; si todos votan commit, el coordinador ordena commit, de lo contrario ordena abort. Es necesario el registro duradero (logging) y recuperación determinista en los participantes para preservar la corrección ante fallos.

Demostración

Demostración
Una transacción actualiza dos shards de base de datos: el coordinador envía 'prepare' a ambos; cada shard escribe un registro 'prepared' y responde 'yes'; el coordinador entonces emite 'commit' y ambos shards hacen los cambios duraderos y liberan los locks, garantizando que ambos confirman o ambos abortan.

Aplicación incorrecta

Aplicación incorrecta
Usar 2PC sin logs duraderos o sin manejar la caída del coordinador, esperar que no bloquee, o aplicarlo en presencia de particiones frecuentes sin medidas de disponibilidad — esto puede llevar a bloqueo indefinido o falta de progreso.

Consecuencia

Consecuencia
Semántica de commit atómico fuerte entre participantes (o todos confirman o todos abortan) a costa de posible bloqueo y sobrecarga de coordinación; facilita el razonamiento sobre corrección pero puede reducir la disponibilidad ante fallos.

Inversión

Inversión
Enfoques optimistas o de commit eventual (por ejemplo, consistencia eventual o compensaciones) que priorizan disponibilidad y vivacidad sobre commits atómicos globales y aceptan inconsistencias temporales.

Límite

Límite
Asegura una decisión atómica cuando los participantes responden y el estado es persistente, pero no garantiza progreso ante la caída del coordinador (puede bloquear) y por sí solo no tolera particiones de red; se necesitan mejoras (3PC, commits basados en consenso) para garantías sin bloqueo.

Tensión semántica

Tensión semántica
Coordinación atómica y bloqueante (2PC) frente a protocolos de commit no bloqueantes basados en consenso (o consistencia eventual): compensaciones entre coherencia fuerte y disponibilidad/vivacidad en sistemas distribuidos.

Síntesis

Síntesis
Un protocolo coordinado en dos pasos — preparar y luego confirmar — que impone la atomicidad de transacciones distribuidas exigiendo votos 'prepared' unánimes y registro duradero, intercambiando posible bloqueo y coste de coordinación por corrección global.