El Three-Phase Commit (3PC) es un protocolo de consenso distribuido diseñado para lograr atomicidad en transacciones que involucran múltiples nodos, incluso en presencia de fallos. Es una extensión del Two-Phase Commit (2PC) que busca eliminar el bloqueo potencial que ocurre en 2PC cuando el coordinador falla después de enviar el mensaje 'prepare' pero antes de que los participantes reciban el mensaje 'commit' o 'abort'. 3PC introduce una fase adicional ('pre-commit') entre las fases 'prepare' y 'commit', permitiendo a los participantes llegar a un consenso sobre el estado de la transacción incluso si el coordinador original falla, siempre que no haya una partición de red que aísle a todos los participantes.
Aunque conceptualmente robusto, el 3PC es raramente implementado en sistemas de producción a gran escala debido a su complejidad y al hecho de que no resuelve el problema de la partición de red (network partition), donde nodos pueden quedar aislados y no comunicarse entre sí. Sistemas como Apache ZooKeeper o etcd, que proporcionan servicios de coordinación distribuida, suelen basarse en algoritmos como Paxos o Raft, que ofrecen garantías de consistencia más fuertes y manejan mejor las particiones de red. Sin embargo, el 3PC es un concepto importante en la teoría de sistemas distribuidos y se estudia para entender las limitaciones y mejoras sobre 2PC.
Para un arquitecto de sistemas, entender el 3PC es crucial para apreciar los desafíos inherentes a la consistencia en sistemas distribuidos y los trade-offs entre disponibilidad, consistencia y tolerancia a particiones (CAP theorem). Aunque 3PC mejora la disponibilidad en ciertos escenarios de fallo de coordinador respecto a 2PC, introduce una mayor latencia y complejidad. Los arquitectos deben evaluar si la resiliencia adicional que ofrece 3PC justifica su sobrecarga, o si algoritmos como Paxos o Raft, que son más complejos pero ofrecen garantías más robustas frente a particiones de red, son una mejor opción para sus requisitos de consistencia y disponibilidad. La elección del protocolo de consenso impacta directamente la fiabilidad, el rendimiento y la complejidad operativa del sistema distribuido.