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.