Protocollo di commit bifase

Architettura comuneedit

In molti casi il protocollo 2PC è distribuito in una rete di computer. È facilmente distribuito implementando più componenti 2PC dedicati simili tra loro, in genere denominati Transaction manager (TMs; anche indicati come agenti 2PC o monitor di elaborazione delle transazioni), che eseguono l’esecuzione del protocollo per ogni transazione (ad esempio, X/Open XA del gruppo aperto). I database coinvolti in una transazione distribuita, i partecipanti, sia il coordinatore che i partecipanti, si registrano per chiudere TMs (in genere residenti sui rispettivi stessi nodi di rete dei partecipanti) per terminare tale transazione utilizzando 2PC. Ogni transazione distribuita ha un set ad hoc di TMS, il TMs a cui i partecipanti alla transazione si registrano. Un leader, il coordinatore TM, esiste per ogni transazione per coordinare 2PC per esso, in genere la TM del database coordinatore. Tuttavia, il ruolo di coordinatore può essere trasferito a un’altra TM per motivi di prestazioni o affidabilità. Piuttosto che scambiare messaggi 2PC tra di loro, i partecipanti scambiano i messaggi con i rispettivi TMS. I TMS pertinenti comunicano tra loro per eseguire lo schema di protocollo 2PC sopra, “rappresentando” i rispettivi partecipanti, per terminare tale transazione. Con questa architettura il protocollo è completamente distribuito (non ha bisogno di alcun componente di elaborazione centrale o struttura dati) e si adatta efficacemente al numero di nodi di rete (dimensione della rete).

Questa architettura comune è efficace anche per la distribuzione di altri protocolli di impegno atomico oltre a 2PC, poiché tutti questi protocolli utilizzano lo stesso meccanismo di voto e la propagazione dei risultati ai partecipanti al protocollo.

Protocol optimizationsEdit

La ricerca nel database è stata fatta su modi per ottenere la maggior parte dei vantaggi del protocollo di commit a due fasi, riducendo i costi di ottimizzazioni del protocollo e le operazioni di protocollo di risparmio sotto determinate ipotesi di comportamento del sistema.

Presunto Abort e Presunto CommitEdit

Presunto abort o Presunto commit sono comuni tali ottimizzazioni. Un’ipotesi sul risultato delle transazioni, commit o abort, può salvare sia i messaggi che le operazioni di registrazione da parte dei partecipanti durante l’esecuzione del protocollo 2PC. Ad esempio, quando si presume l’interruzione, se durante il ripristino del sistema dall’errore non viene trovata alcuna prova registrata per il commit di una transazione, si presume che la transazione sia stata interrotta e agisce di conseguenza. Ciò significa che non importa se gli aborti vengono registrati e tale registrazione può essere salvata in base a questa ipotesi. In genere una penalità di operazioni aggiuntive viene pagata durante il ripristino dall’errore, a seconda del tipo di ottimizzazione. Pertanto, la migliore variante di ottimizzazione, se presente, viene scelta in base alle statistiche sugli errori e sui risultati delle transazioni.

Tree two-phase commit protocolEdit

Il protocollo Tree 2PC (chiamato anche 2PC annidato o 2PC ricorsivo) è una variante comune di 2PC in una rete di computer, che utilizza meglio l’infrastruttura di comunicazione sottostante. I partecipanti in una transazione distribuita vengono in genere richiamati in un ordine che definisce una struttura ad albero, l’albero delle invocazioni, in cui i partecipanti sono i nodi e gli spigoli sono le invocazioni (collegamenti di comunicazione). Lo stesso albero è comunemente utilizzato per completare la transazione con un protocollo 2PC, ma anche un altro albero di comunicazione può essere utilizzato per questo, in linea di principio. In un albero 2PC il coordinatore è considerato la radice (“top”) di un albero di comunicazione (albero invertito), mentre i partecipanti sono gli altri nodi. Il coordinatore può essere il nodo che ha originato la transazione (richiamato ricorsivamente (transitivamente) gli altri partecipanti), ma anche un altro nodo nello stesso albero può assumere il ruolo di coordinatore. I messaggi 2PC del coordinatore vengono propagati ” verso il basso “nell’albero, mentre i messaggi al coordinatore vengono” raccolti “da un partecipante da tutti i partecipanti sottostanti, prima che invii il messaggio appropriato” su “nell’albero (tranne un messaggio di interruzione, che viene propagato” su ” immediatamente dopo averlo ricevuto o se il partecipante corrente avvia l’interruzione).

Il protocollo Dynamic two-phase commit (Dynamic two-phase commit, D2PC) è una variante dell’albero 2PC senza un coordinatore predeterminato. Presuppone diverse ottimizzazioni che sono state proposte in precedenza. I messaggi di accordo (Sì voti) iniziano a propagarsi da tutte le foglie, ogni foglia quando completa i suoi compiti per conto della transazione (diventando pronto). Un nodo intermedio (non foglia) invia pronto quando un messaggio di accordo all’ultimo (singolo) nodo vicino da cui il messaggio di accordo non è ancora stato ricevuto. Il coordinatore è determinato dinamicamente facendo scorrere i messaggi di accordo sull’albero delle transazioni, nel punto in cui si scontrano. Si scontrano in un nodo dell’albero delle transazioni, per essere il coordinatore o su un bordo dell’albero. In quest’ultimo caso uno dei due nodi di edge viene eletto come coordinatore (qualsiasi nodo). D2PC è ottimale per il tempo (tra tutte le istanze di un albero di transazione specifico e qualsiasi implementazione del protocollo 2PC Albero specifico; tutte le istanze hanno lo stesso albero; ogni istanza ha un nodo diverso come coordinatore): Scegliendo un coordinatore ottimale, D2PC impegna sia il coordinatore che ciascun partecipante nel minor tempo possibile, consentendo il rilascio più rapido possibile di risorse bloccate in ogni partecipante alla transazione (nodo ad albero).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.