Sie sind auf Seite 1von 16

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 Participantes

QUERY TO COMMIT
-------------------------------->
AGREEMENT / ABORT prepare/abort
<-------------------------------
commit/abort COMMIT / ROLLBACK
-------------------------------->
ACKNOWLEDGMENT commit/abort
<--------------------------------
end
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

Das könnte Ihnen auch gefallen