Condividi tramite


Two-Phase Commit

Un'operazione di logica di business specifica può comportare più programmi in esecuzione in più computer. In questa progettazione, la transazione non viene considerata completa a meno che tutti i programmi coinvolti completino correttamente le esecuzioni. Affinché questi programmi verifichino che tutti gli altri programmi che fanno parte della transazione abbiano completato le transazioni, devono utilizzare il protocollo 2PC (Two-Phase Commit).

Il termine transazione (o uno dei suoi derivati, ad esempio transazionale), potrebbe essere fuorviante. In molti casi, il termine transazione descrive un singolo programma in esecuzione in un computer mainframe che non usa il protocollo 2PC. In altri casi, tuttavia, viene usato per indicare un'operazione eseguita da più programmi su più computer che usano il protocollo 2PC.

Il protocollo 2PC è denominato perché usa le due fasi seguenti prima di eseguire il commit dell'operazione:

  • Fase 1: Preparare. In questa fase, ognuno dei programmi coinvolti nella transazione invia un messaggio a TP Manager, ad esempio Microsoft Distributed Transaction Coordinator (MS DTC), informando il tp manager che è pronto e in grado di eseguire la sua parte dell'operazione. Questa fase è conosciuta anche come preparare perché i programmi sono pronti a eseguire il commit o il rollback delle modifiche. Se tp manager riceve la conferma da ognuno dei programmi coinvolti, procede alla fase 2.

  • Fase 2: eseguire il commit o il rollback. In questa fase, tp manager indica a ognuno dei programmi di eseguire il commit o il rollback di tutte le modifiche richieste come parte della transazione. Un rollback eseguito correttamente deve restituire al sistema lo stato originale.

Annotazioni

Lo stato tra la fase 1 e la fase 2 è noto come stato in dubbio. Gli sviluppatori che usano .NET nelle applicazioni possono decidere quali parti dell'applicazione richiedono l'accesso a un tp e quali parti non lo fanno. TI estende questa scelta anche al mainframe gestendo le chiamate che richiedono transazioni e chiamate che non lo fanno. Per le applicazioni che richiedono l'integrazione completa tra le transazioni con commit a due fasi basate su Windows e il livello di sincronizzazione basato su mainframe, TI offre tutte le funzionalità necessarie. TI esegue questa operazione senza che sia necessario modificare l'applicazione client, senza inserire codice eseguibile nel mainframe e con poche o nessuna modifica ai TP del mainframe. L'applicazione client non deve distinguere tra il componente TI e qualsiasi altro riferimento al componente.

Nella figura seguente viene illustrato come un'applicazione client basata su Windows usi in modo implicito Microsoft Distributed Transaction Coordinator (DTC) per coordinare il commit in due fasi di una transazione distribuita che coinvolge SQL Server e un TP CICS. DTC coordina le transazioni 2PC.

Immagine che mostra un'applicazione client che usa Transaction Integrator e DTC per coordinare un commit in due fasi tra SQL Server e un'applicazione CICS.
Applicazione client che usa Transaction Integrator e DTC per coordinare un commit in due fasi tra SQL Server e un'applicazione CICS

Annotazioni

Transaction Integrator supporta esclusivamente 2PC quando si connette a un mainframe tramite LU 6.2 (APPC) quando l'elaborazione è avviata da Windows. Quando ci si connette direttamente tramite TCP/IP non è disponibile alcun supporto 2PC tramite TI.

Applicazione client che usa TI e DTC

Le transazioni con commit a due fasi (2PC) comportano una serie di componenti. Per usare correttamente Transaction Integrator (TI), è necessario comprendere i componenti e la terminologia 2PC seguenti:

Livello 2 del punto di sincronizzazione
I TP possono interagire tra loro usando il protocollo LU6.2 a uno dei tre livelli di sincronizzazione: livello di sincronizzazione 0, livello di sincronizzazione 1 o livello di sincronizzazione 2. Solo uno di questi tre livelli di sincronizzazione, Sync Level 2, usa il protocollo 2PC. Il livello di sincronizzazione 0 non ha integrità dei messaggi, mentre il livello di sincronizzazione 1 supporta l'integrità limitata dei dati.

TP Manager
Il gestore del programma di transazioni (TP) è un servizio di sistema responsabile del coordinamento del risultato delle transazioni per poter ottenere l'atomicità. I responsabili TP garantiscono che i gestori delle risorse raggiungano una decisione coerente sul commit o l'abort della transazione. Il Gestore TP di Windows è il MS DTC.

Risincronizzare il servizio
Il servizio LU6.2 Resync è un componente di Host Integration Server che funziona con MS DTC per eseguire il ripristino automatico in uno stato coerente in seguito a errori in qualsiasi punto di una transazione 2PC. Il servizio LU6.2 Resync viene installato per impostazione predefinita durante l'installazione di Host Integration Server.

Gestore delle risorse
Resource Manager è un servizio di sistema che gestisce i dati durevoli. Le applicazioni server usano i gestori di risorse per mantenere lo stato durevole dell'applicazione, ad esempio un record di inventario disponibile, ordini in sospeso e crediti degli account. I gestori di risorse lavorano in collaborazione con il gestore delle transazioni per fornire all'applicazione una garanzia di atomicità e isolamento (usando il protocollo 2PC). Microsoft SQL Server™ e TI sono esempi di resource manager.

Vedere anche

Transazioni di Windows e transazioni mainframe
Elaborazione delle transazioni online