WS-Atomic Transaction

A Wikipédiából, a szabad enciklopédiából

A WS-Atomic Transaction (Webszolgáltatás Atomi Tranzakció), a Webszolgáltatás Tranzakciók (angolul Web Services Transactions) közé tartozik. A Web-Szolgáltatás Tranzakciók specifikációi olyan nagy cégek közreműködésével készültek, mint az IBM, a BEA és a Microsoft.

Web-Szolgáltatás Tranzakciók jelenleg három nagyobb működési egységre bonthatóak: Webszolgáltatás Koordináció (WS-Coordination), Web-Szolgáltatás Atomi Tranzakció (WS-Atomic Transaction) és Webszolgáltatás Üzleti Aktivitás (WS-Business Activity).[1]

Bevezetés[szerkesztés | forrásszöveg szerkesztése]

A Web-Szolgáltatás Atomi Tranzakció egy OASIS szabvány rövid életű, mindent vagy semmit alapon működő, több szolgáltatást magába foglaló tranzakciók megvalósítására. A specifikáció három protokollt definiál a működéséhez:

  • végrehajtási (completion)
  • felejtő két fázisú véglegesítési (volatile two-phase commit)
  • tartós két fázisú véglegesítési (durable two-phase commit)

A Web-Szolgáltatás fejlesztők ezek közül bármelyiket, vagy akár az összeset is használhatják a tranzakció megalkotásához. Ezen protokolok lehetővé teszik a létező tranzakciókezelő rendszerek számára, hogy becsomagolják a saját protokolljaikat, és ezáltal különböző hardware és software gyártók termékeivel együttműködjenek. A Web-Szolgáltatás Atomi Tranzakció a Web-Szolgáltatás Koordinációra épül, amely definiálja az Aktivációs és a Regisztrációs szolgáltatást, valamint a CoordinationContext típust.[1][2][3]

Működése [2][szerkesztés | forrásszöveg szerkesztése]

A tranzakciók során három szerepkört különböztetünk meg.

A kezdeményező (initiator)
az a Web-szolgáltatás, amely kezdeményezi egy tranzakció véglegesítését vagy visszavonását
A koordinátor (coordinator)
aki az egész folyamatot vezérli
A résztvevők (participants)
azok a Web-szolgáltatások, amelyek részt vesznek a tranzakció lebonyolításában

Az Atomi Tranzakciók, mindent vagy semmiit alapon működnek. Amikor egy résztvevő befejezi a működését, akkor csak "kísérletképpen" véglegesíti (commit-teli) az eredményt. Vagyis a megváltozott adatok nem kerülnek tárolásra, illetve a tranzakción kívülről sem lesznek láthatóak. Amikor az egyik alkalmazás befejezi a működését akkor megkéri a koordinátort, hogy értékelje ki a tranzakciót. Ekkor a koordinátor megkérdezi az összes résztvevőt, hogy volt-e valahol hiba. Amennyiben mindenhonnan azt a visszajelzést kapja, hogy a futás sikeres volt, akkor véglegesítteti az összes végrehajtott akciót. Azonban ha csak egy esetben is azt a választ kapja, hogy valami hiba lépett fel, vagy valamelyik résztvevő alkalmazás egyáltalán nem válaszol, akkor a koordinátor az összes változtatást visszavonatja.

A specifikáció implementálásához használni kell a következő XML névteret:

http://docs.oasis-open.org/ws-tx/wsat/2006/06

Definiált protokolok [2][szerkesztés | forrásszöveg szerkesztése]

Végrehajtási (Completion) protokoll[szerkesztés | forrásszöveg szerkesztése]

A végrehajtási protokoll segítségével kezdeményezi egy alkalmazás a véglegesítés/vagy visszavonás műveletet. Ezután a egyes protokollokhoz regisztrált résztvevők alapján, a koordinátor a felejtő két fázisú véglegesítéssel kezd és ezután tér át a tartós két fázisú véglegesítésre.

Egy kezdeményezőnek, amely a végrehajtási a protokollra regisztrált, a következő protokoll azonosítót kell használnia:

http://docs.oasis-open.org/ws-tx/wsat/2006/06/Completion

A végrehajtási protokoll koordinátora, az Atomi Tranzakció gyökér koordinátora kell legyen.

Az olyan koordinációs szolgáltatások, amelyek az Aktivációs szolgáltatást támogatják, a Véglegesítési protokollt is támogatniuk kell.

A protokoll által használt üzenetek[szerkesztés | forrásszöveg szerkesztése]

  • A koordinátor által fogadottak:
    Commit
    Az üzenet fogadása után a koordinátor tudja, hogy a kezdeményező végzett a feladatával. Az aktív koordinátor megkísérelheti véglegesíteni a tranzakciót.
    Rollback
    Az üzenet fogadása után a koordinátor tudja, hogy a kezdeményező nem tudta végrehajtani a feladatát. Az aktív koordinátornak vissza kell vonni a tranzakciót.
  • A kezdeményező által fogadottak:
    Committed
    Az üzenet fogadása után a kezdeményező tudja, hogy a koordinátor a véglegesítés mellett döntött.
    Aborted
    Az üzenet fogadása után a kezdeményező tudja, hogy a koordinátor a visszavonás mellett döntött.

Két fázisú véglegesítési (Two-Phase Commit) protokoll[szerkesztés | forrásszöveg szerkesztése]

A két fázisú véglegesítési protokoll vezérli a véglegesítés vagy a visszavonás eldöntését, valamint biztosítja, hogy a végső eredményről minden résztvevő értesüljön.

Két fajtája van:

  • Felejtő két fázisú véglegesítési protokoll (Volatile Two-Phase Commit)
    Ekkor a résztvevők felejtő erőforrásokat (például cache register) használnak a protokollhoz
    Tartós két fázisú véglegesítési protokoll (Durable Two-Phase Commit)
    A résztvevők tartós erőforrásokat (például adatbázist) használnak a protokollhoz.

Felejtő két fázisú véglegesítési (Volatile Two-Phase Commit) protokoll[szerkesztés | forrásszöveg szerkesztése]

A végrehajtási protokollon történő Commit üzenet fogadása után a gyökér koordinátor elkezdi fölkészíteni az összes, ehhez a protokollhoz regisztrált résztvevőt. Minden a protokollhoz tartozó résztvevőnek válaszolnia kell, mielőtt a tartós két fázisú véglegesítési protokollhoz tartozó résztvevők felkészítése megkezdődhetne. A tartós két fázisú véglegesítési protokollhoz tartozók felépítésének kezdete előtt új résztvevők regisztrálhatnak a protokollhoz. A tartós két fázisú véglegesítési protokolhoz regisztrálók felkészítésének kezdete után azonban, a koordinátornak hibaüzenettel (Cannot Register Participant) el kell utasítani az új regisztrálókat. A felejtő címzett nem biztos, hogy kap visszajelzést a tranzakció végeredményéről.

A felejtő két fázisú véglegesítési protokollhoz regisztrált résztvevőknek a következő protokoll azonosítót kell használniuk:

http://docs.oasis-open.org/ws-tx/wsat/2006/06/Volatile2PC

Tartós két fázisú véglegesítési (Durable Two-Phase Commit) protokoll[szerkesztés | forrásszöveg szerkesztése]

A felejtő két fázisú véglegesítési protokollhoz regisztrált résztvevők felkészítése után, a koordinátor megkezdi az ezen protokolhoz regisztrált résztvevők felkészítését. Minden, ehhez a protokolhoz tartozó résztvevőnek Prepared vagy ReadOnly választ kell adnia, mielőtt a kettő darab két fázisú véglegesítési protokolhoz regisztráltaknak a Commit üzenet elküldésre kerüle, és ezáltal a tranzakció véget érne.

A tartós két fázisú véglegesítési protokollhoz regisztrált résztvevőknek a következő protokoll azonosítót kell használniuk:

http://docs.oasis-open.org/ws-tx/wsat/2006/06/Durable2PC

A két fázisú véglegesítési protokollok által használt üzenetek[szerkesztés | forrásszöveg szerkesztése]

  • A résztvevők által fogadottak:
    Prepare
    A fogadó résztvevő az első fázisba lép, és szavaz a tranzakció eredményéről. Az aktív résztvevőnek erre az üzenetre Aborted, Prepared vagy ReadOnly üzenettel kell válaszolnia. Ha a résztvevő nem tud a tranzakciótól, akkor Aborted üzenettel kell válaszolnia. Amennyiben már korábban válaszolt, úgy ugyanazt a választ kell ismét elküldenie.
    Rollback
    A fogadó résztvevő tudja, hogy a tranzakció visszavonásra került. Az a résztvevő, amelyik nem véglegesít (Committing), Aborted üzenettel kell válaszoljon, és ajánlott eldobnia minden, a tranzakcióval kapcsolatos adatot. Ha a résztvevő nem tud a tranzakciótól, akkor Aborted üzenettel kell válaszolnia.
    Commit
    A fogadó résztvevő tudja, hogy véglegesítenie kell a tranzakciót. Ezt az üzenet csak az első fázis után lehet elküldeni, amennyiben a résztvevő a véglegesítésre szavazott. Ha a résztvevő nem tud a tranzakciótól, akkor Committed üzenettel kell válaszolnia.
  • A koordinátor által fogadottak:
    Prepared
    A koordinátor tudja, hogy az adott résztvevő felkészült, és a tranzakció végrehajtására szavazott.
    ReadOnly
    A koordinátor tudja, hogy az adott résztvevő a tranzakció végrehajtására szavazott, és elfelejtette a tranzakciót. Az adott résztvevő a második fázisban már nem kíván részt venni.
    Aborted
    A koordinátor tudja, hogy az adott résztvevő visszavonta, és elfelejtette a tranzakciót.
    Committed
    A koordinátor tudja, hogy az adott résztvevő véglegesítette, és elfelejtette a tranakciót.

Megjegyzések[szerkesztés | forrásszöveg szerkesztése]

Egy résztvevő több protokollhoz is regisztrálva lehet.

A protokoll elemeknek vannak különböző kiterjesztési pontjaik. Ezek azonban nem mondhatnak ellen a szülő és/vagy tulajdonos elem szemantikájának. Ha egy fogadó nem ismer föl egy kiterjesztést, akkor azt ajánlott figyelmen kívül hagynia.

Erősen ajánlott a szolgáltatások közötti kommunikáció biztosítása a WS-Security specifikációban leírt mechanizmusok fölhasználásával.

Források[szerkesztés | forrásszöveg szerkesztése]