WS-Atomic Transaction
Ezt a szócikket át kellene olvasni, ellenőrizni a szöveg helyesírását és nyelvhelyességét, a tulajdonnevek átírását. Esetleges további megjegyzések a vitalapon. |
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]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 protokollok 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ő hardver és szoftver 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]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 protokollok[2]
[szerkesztés]Végrehajtási (Completion) protokoll
[szerkesztés]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:
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]- 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]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]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 protokollhoz 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[halott link]
Tartós két fázisú véglegesítési (Durable Two-Phase Commit) protokoll
[szerkesztés]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 protokollhoz regisztrált résztvevők felkészítését. Minden, ehhez a protokollhoz tartozó résztvevőnek Prepared vagy ReadOnly választ kell adnia, mielőtt a kettő darab két fázisú véglegesítési protokollhoz regisztráltaknak a Commit üzenet elküldésre kerülne, é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[halott link]
A két fázisú véglegesítési protokollok által használt üzenetek
[szerkesztés]- 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]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.