Commit de dos fases
El protocol de consolidació en dos fases, confirmació en dos fases[1] o commit en dos fases, també conegut per les sigles 2PC (de l'anglés 2-phase commit), és un protocol de consens distribuït que permet a tots els nodos d'un sistema distribuït posar-se d'acort para consolidar a una transacció. Típicament és usat en bases de senyes distribuïdes. L'objectiu del protocol és que tots els nodos realisen un commit de la transacció o l'aborten.
Les dos fases de l'algoritme són la «fase de petició de commit», en el qual el coordinador intenta preparar a tots els demés, i la «fase de commit» o consolidació, en la qual el coordinador completa les transaccions a tots els demés participants.
Descripció general
[editar | editar còdic]L'algoritme està basat en l'existència d'un coordinador (al restant de nodos de la ret se'ls crida participants) i es dividix en dos fases:[2]
Fase de preparació de commit, en la qual el coordinador intenta preparar a tots per al commit contactant en totes les rèpliques que participen, les quals contesten si accepten o aborten la transacció.
Fase commit. Quan totes les rèpliques han respost el coordinador busca els conflictes si n'hi ha.
- Si es detecta un conflicte en els mensages enviats per les rèpliques o una rèplica indica que la transacció té que ser abortada, l'acort serà abortat i el coordinador enviarà un mensage a totes les rèpliques per a que aborten la transacció.
- Si no es detecten conflictes llavors el coordinador indica a tots realisar el commit. En acabant de que totes les rèpliques realisen la consolidació, envien un mensage de confirmació al coordinador.
El protocol assumix que: Hi ha almagasenament estable en cada nodo en un sistema de registre d'escritura per anticipat (implica que encara que el nodo caiga estes senyes mai es perden o corrompen). Els nodos no estan sempre caiguts. Si alguna rèplica o el coordinador falla sempre el sistema falla. Dos nodos qualsevol poden comunicar-se uns en els atres. Açò no és molt restrictiu, ya que la comunicació de rets pot ser reenrutada normalment. Les primeres dos suposicions són fortes ya que si un nodo està totalment destruït es posa en risc estes suposicions.
Algoritme bàsic
[editar | editar còdic]Fase de petició de la consolidació
[editar | editar còdic]- El coordinador envia un mensage-consulta a tots els participants per a fer un commit.
- Els participants eixecuten la transacció fins al punt en que se'ls preguntarà per la consolidació. Poden escriure una entrada al seu registre de desfer (undo log) i una entrada al seu registre de refer (redo log).
- Cada participant respon en un mensage acorde si la transacció va tindre èxit, o un mensage abortar si va fallar la transacció.
- El coordinador espera fins que tinga un mensage de cada participant.
Fase de consolidat
[editar | editar còdic]Èxit
[editar | editar còdic]Si el coordinador d'esta pàgina va rebre un mensage acorde de tots els participants durant la fase de petició de commit:
- El coordinador envia un mensage
commita tots els participants. - Cada participant completa l'operació, i llibera tots els bloquejos i recursos mantinguts durant la transacció.
- Cada participant envia un reconeiximent (ACK) al coordinador.
- El coordinador completa la transacció quan ha rebut tots els reconeiximents.
Fracàs
[editar | editar còdic]Si algun participant va enviar un mensage abortar durant la fase de petició de commit:
- El coordinador envia un mensage de reversión o rollback a tots els participants.
- Cada participant desfà la transacció usant el registre de desfer, i llibera els recursos i bloquejos mantinguts durant la transacció.
- Cada participant envia un reconeiximent al coordinador.
- El coordinador completa la transacció quan han segut rebuts els reconeiximents.
Referències
[editar | editar còdic]- ↑ «Confirmar una transacció en fase única i múltiple» (en és-és). docs.microsoft.com. Consultat el 12 de març de 2018.
- ↑ Consensus on a multicore machine. Roni Häcki. 2015. Systems Group, Department of Computer Science, ETH Zurich
- Este artícul conté una traducció derivada de «Commit de dos fases» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.