2012-09-27 19 views
5

Sono piuttosto confuso riguardo allo syncpoint da WebSphere MQ. Secondo il riferimento dal WMQ Infocenter, il syncpoint è definito come segue:Preoccupazione sul concetto di punto di sincronizzazione da WMQ

La decisione di impegnare o indietro i cambiamenti è presa, nel caso più semplice, al termine di un'operazione. Tuttavia, può essere più utile per un'applicazione sincronizzare le modifiche dei dati in altri punti logici all'interno di un'attività. Questi punti logici sono chiamati punti di sincronizzazione (o punti di sincronizzazione) e il periodo di elaborazione di un insieme di aggiornamenti tra due punti di sincronizzazione è chiamato unità di lavoro.

Pertanto, a unit of work è chiamato come l'elaborazione tra due punti di sincronizzazione. Dalla mia comprensione, quell'unità di lavoro è effettivamente una transazione. Così traggo l'immagine qui che riflette il rapporto tra loro:

enter image description here

  1. Perchè sono comprenderla correttamente?
  2. Un'altra domanda qui è come per il syncpoint, si dice sincronizzare i dati per l'applicazione, dove sono sincronizzati i dati e dove?

Grazie

risposta

5

Risposta 1: Sì, si sta capendo correttamente. Le transazioni sono unità di lavoro atomiche che hanno esito positivo o negativo nella loro interezza. I punti di sincronizzazione sono i confini tra le transazioni. La sottile differenza tra una transazione e un punto di sincronizzazione è che il lavoro svolto nell'ambito di una transazione può essere in dubbio per un periodo di tempo mentre il punto di sincronizzazione è lo stato durante il quale la transazione non è in dubbio. In caso di errore, le code vengono ripristinate allo stato esistente all'ultimo punto di sincronizzazione e quindi tutte le transazioni in sospeso ripristinate o, nel caso di XA, eventualmente commesse dal gestore risorse.

La pagina Infocenter Transaction management and support può spiegarlo meglio della pagina collegata nel post.

Risposta 2: i dati sono sincronizzati dal/i gestore/i di risorse. Per le unità di lavoro locali in cui i messaggi sono gli unici partecipanti alla transazione, la sincronizzazione si verifica solo nella coda e il gestore code agisce sia come gestore risorse sia come gestore transazioni. Per le unità di lavoro globali che coinvolgono messaggi e aggiornamenti del database nella stessa transazione, la sincronizzazione avviene in QMgr e nel database che funge da gestori delle risorse. Il gestore delle transazioni sarà MQ o un server delle applicazioni e orchestra la sincronizzazione tra i gestori delle risorse.

Indipendentemente dal fatto che la transazione sia locale o globale (a volte indicata anche come commit monofase o commit a 2 fasi), la relazione tra transazioni e punti di sincronizzazione è la stessa. Il punto di sincronizzazione è il punto temporale più recente in cui uno stato noto viene conservato e al quale è possibile eseguire il rollback di una transazione in dubbio.

+0

Ottima risposta. – Shashi