Procesamiento de transacciones distribuidas 2PC – 3PC 2PC TWO-PHASE COMMIT Two-Phase commit Algoritmo distribuido que coordina los procesos que participan en una transacción atómica distribuida. Ejecución normal Cuando no ocurre ninguna falla, el protocolo consta de dos fases. –commit-request phase (voting phase) –commit phase commit-request phase (voting phase) • El proceso coordinador prepara a los procesos participantes para que lleven a cabo los pasos necesarios para completar o abortar la transacción. • Todos deberán votar, si, para indicar que la ejecución local de su porción de la transacción termino correctamente, no, si hubo algún problema. commit phase • El coordinador decide si completar (commit) la transacción (si todos votaron si) o abortarla y notifica la decisión a los participantes. • Los participantes completan (commit) la transacción o en su caso abortan y realizan un rollback con sus propios recursos de recuperación. Supuestos • El sitio maestro es designado como el coordinador y el resto son participantes. • Se cuenta con almacenamiento estable en cada nodo para los registros (archivos de log). • Ningún nodo falla de manera permanente. • Los datos en los registros de log nunca se pierden o dañan. • Todos los nodos se pueden comunicar entre sí. Pasos en la fase de votación • El coordinador envía un mensaje query to commit a todos los participantes y espera hasta recibir una respuesta de todos ellos. • Los participantes ejecutan su porción local de la transacción. • Los participantes escriben en sus archivos de log. • Los participantes contestan con un mensaje de agreement (voto si) si tubo éxito o un mensaje de abort (voto no) si tubo algún fallo que le impidiera completar su parte. Pasos en la fase de terminación Si el coordinador recibe un mensaje agreement de todos los participantes: • El coordinador envía un amensaje de commit a todos los partipantes. • Cada participante completa su porción de la transacción y libera los recursos bloqueados durante la transacción. • Cada participante envía un mensaje de acknowledgment al coordinador. • El coordinador termina la transacción cuando recibe la confirmación de todos los participantes. Pasos en la fase de terminación Si el coordinador recibe un mensaje abort de algún participante (o agota un tiempo de espera): • El coordinador envía un mensaje de rollback a todos los participantes. • Cada participante deshace su porción de la transacción utilizando sus archivos de log y libera los recursos bloqueados durante la transacción. • Cada participante envía un mensaje de acknowledgment al coordinador. • El coordinador deshace la transacción cuando recibe la confirmación de todos los participantes. Intercambio de mensajes Coordinador commit/abort end Participantes QUERY TO COMMIT --------------------------------> AGREEMENT / ABORT <------------------------------COMMIT / ROLLBACK --------------------------------> ACKNOWLEDGMENT <-------------------------------- prepare/abort commit/abort Protocolo bloqueante • Después de que un participante envía un mensaje de agreement al coordinador, éste se bloquea hasta que recibe un mensaje de commit or rollback. • Realizar un diagrama finito de estados desde el punto de vista del coordinador y de los participantes. http://courses.cs.vt.edu/~cs5204/fall00/ Consultada abril 2016 3PC THREE-PHASE COMMIT