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 nagyvállalatok együttműködésével készültek, mint az IBM, a BEA és a Microsoft, valamint további iparági szereplők is részt vettek a fejlesztésben. A szabvány fő célja, hogy interoperábilis, megbízható tranzakciós mechanizmust biztosítson elosztott webszolgáltatások számára.
A Web-Szolgáltatás Tranzakciók jelenleg három fő működési egységre oszthatók: 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). Ezek a komponensek egymásra épülve teszik lehetővé a különböző összetettségű üzleti folyamatok és tranzakciók kezelését.http://www.ibm.com/developerworks/library/specification/ws-tx/
Bevezetés
A Web-Szolgáltatás Atomi Tranzakció egy OASIS által elfogadott nyílt szabvány, amely rövid élettartamú, mindent vagy semmit (all-or-nothing) alapon működő, több szolgáltatást átfogó tranzakciók megvalósítását teszi lehetővé elosztott rendszerekben. A szabvány célja, hogy biztonságos és konzisztens tranzakciókezelést biztosítson különböző szolgáltatók között is, támogatva a heterogén környezeteket és a platformfüggetlenséget.
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 fejlesztők ezek közül bármelyik protokollt vagy azok kombinációját alkalmazhatják a tranzakció megalkotásához, az adott üzleti igényeknek és az érintett erőforrások tulajdonságainak megfelelően. Ezek a protokollok lehetővé teszik a meglévő tranzakciókezelő rendszerek számára, hogy saját protokolljaikat becsomagolják, így különböző hardver- és szoftvergyártók termékei zökkenőmentesen együtt tudnak működni.
A Web-Szolgáltatás Atomi Tranzakció a Web-Szolgáltatás Koordinációra épül, amely definiálja az Aktivációs (Activation) és a Regisztrációs (Registration) szolgáltatásokat, valamint a CoordinationContext típust, amely a tranzakciók összefüggéseit és a résztvevők közötti információcserét biztosítja.http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec-os.pdfhttp://www.webforefront.com/about/danielrubio/articles/techtarget/transactions.html Az OASIS legfrissebb verziója (1.2) 2009-ben jelent meg, és továbbra is iparági szabványnak számít.
Működése
A WS-Atomic Transaction tranzakciók során három fő szerepkör különíthető el:
A kezdeményező (initiator) az a Web-szolgáltatás, amely elindítja a tranzakció véglegesítését vagy visszavonását, és koordinációs üzeneteket küld a koordinátornak az aktuális állapot alapján
A koordinátor (coordinator) egy központi komponens, amely az egész tranzakciós folyamatot irányítja, összegyűjti a résztvevők visszajelzéseit, és meghozza a végső döntést a tranzakció véglegesítéséről vagy visszavonásáról
A résztvevők (participants) azok a Web-szolgáltatások, amelyek tényleges műveleteket hajtanak végre a tranzakció során, például adatokat módosítanak, erőforrásokat foglalnak le vagy szabadítanak fel
Az Atomi Tranzakciók mindent vagy semmit elven működnek, vagyis a tranzakcióban részt vevő összes művelet vagy sikeresen végrehajtódik és véglegesítésre kerül, vagy minden változtatás visszavonásra kerül, hogy a rendszer konzisztens állapotban maradjon. Amikor egy résztvevő befejezi a feladatát, először csak előkészíti az eredményét (commit attempt), vagyis a módosítások még nem lesznek véglegesítve, és kívülről sem lesznek láthatóak. Amikor minden alkalmazás befejezte a feladatát, a kezdeményező értesíti a koordinátort, hogy értékelje ki a tranzakciót.
A koordinátor ezután lekérdezi az összes résztvevőt, hogy történt-e hiba vagy minden sikeresen lefutott-e. Ha minden résztvevő sikeres futásról számol be, a koordinátor elindítja a véglegesítést, és az összes végrehajtott műveletet tartósítja. Ha bármelyik résztvevő hibát jelez, vagy nem válaszol, a koordinátor minden változtatást visszavon. Ez a folyamat garantálja, hogy a tranzakció eredménye konzisztens és egységes lesz minden érintett rendszerben.
A specifikáció implementálásához és az interoperabilitás biztosításához a következő XML névteret kell használni:
http://docs.oasis-open.org/ws-tx/wsat/2006/06
Definiált protokollok Végrehajtási (Completion) protokoll
A végrehajtási protokoll teszi lehetővé, hogy egy alkalmazás kezdeményezze a tranzakció véglegesítését vagy visszavonását. Miután a kezdeményező regisztrálja magát a végrehajtási protokollra, a koordinátor először a felejtő két fázisú véglegesítési protokollt alkalmazza, majd áttér a tartós két fázisú véglegesítésre, hogy minden erőforrás helyesen kezelje a tranzakció lezárását.
Egy kezdeményező, amely a végrehajtási protokollra regisztrált, a következő protokoll azonosítót kell használja:
A végrehajtási protokoll koordinátora az Atomi Tranzakció legfelső szintű koordinátora lesz.
Azok a koordinációs szolgáltatások, amelyek támogatják az Aktivációs szolgáltatást, egyúttal támogatják a Véglegesítési protokollt is.
A protokoll által használt üzenetek A koordinátor által fogadottak: Commit Az üzenet fogadását követően a koordinátor tudomásul veszi, hogy a kezdeményező befejezte a feladatát, és megkezdheti a tranzakció véglegesítését. Rollback Az üzenet fogadása után a koordinátor felismeri, hogy a kezdeményező nem tudta végrehajtani a feladatát, ezért a tranzakció visszavonását kezdeményezi. A kezdeményező által fogadottak: Committed Az üzenet fogadása után a kezdeményező arról értesül, hogy a koordinátor a tranzakció véglegesítése mellett döntött. Aborted Az üzenet fogadása után a kezdeményező tudomásul veszi, hogy a koordinátor a tranzakció visszavonása mellett döntött.
Két fázisú véglegesítési (Two-Phase Commit) protokoll
A két fázisú véglegesítési protokoll biztosítja, hogy a tranzakció véglegesítéséről vagy visszavonásáról minden résztvevő értesüljön, és konzisztens állapotban maradjon. Két fő változata létezik:
Felejtő két fázisú véglegesítési protokoll (Volatile Two-Phase Commit) Olyan erőforrások kezelésére szolgál, amelyek nem tartósak (például cache vagy memóriában tárolt adatok), és gyors, de nem feltétlenül megbízható tranzakciókezelést biztosít. Tartós két fázisú véglegesítési protokoll (Durable Two-Phase Commit) Olyan erőforrásokra alkalmazható, amelyek tartósan tárolnak adatokat (pl. adatbázis), és garantálják a hosszú távú konzisztenciát még hibák vagy újraindítás esetén is.
Felejtő két fázisú véglegesítési (Volatile Two-Phase Commit) protokoll
A végrehajtási protokoll Commit üzenetének fogadása után a gyökér koordinátor először minden, ehhez a protokollhoz regisztrált résztvevőt felkészít. Minden résztvevőnek válaszolnia kell, mielőtt a tartós két fázisú véglegesítési protokoll résztvevőinek felkészítése megkezdődhet. A tartós protokoll résztvevőinek előkészítése előtt még új résztvevők regisztrálhatnak a felejtő protokollhoz, de utána a koordinátor hibaüzenettel (Cannot Register Participant) elutasítja az új regisztrációkat.
A felejtő címzett nem garantáltan kap visszajelzést a tranzakció végső eredményéről, mivel ezek az erőforrások nem tárolnak tartós információt.
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
A felejtő protokoll résztvevőinek sikeres előkészítése után a koordinátor megkezdi a tartós két fázisú véglegesítési protokollhoz regisztrált résztvevők előkészítését. Ezeknek a résztvevőknek Prepared vagy ReadOnly válasszal kell reagálniuk, mielőtt a Commit üzenet elküldése megtörténik, és a tranzakció véglegesen lezárul.
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 A résztvevők által fogadottak: Prepare A fogadó résztvevő az első fázisba lép, és döntési üzenetet küld 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 ismeri a tranzakciót, Aborted üzenettel válaszol. Ha már korábban válaszolt, ugyanazt a választ ismétli meg. Rollback A fogadó résztvevő tudja, hogy a tranzakció visszavonásra került. A nem véglegesítő (Committing) résztvevőnek Aborted üzenettel kell válaszolnia, és célszerű törölnie minden tranzakcióval kapcsolatos adatot. Ha a résztvevő nem ismeri a tranzakciót, Aborted üzenettel válaszol. Commit A fogadó résztvevő tudja, hogy véglegesítenie kell a tranzakciót. Ez az üzenet csak az első fázis után küldhető, amennyiben a résztvevő a véglegesítésre szavazott. Ha a résztvevő nem ismeri a tranzakciót, Committed üzenettel válaszol. 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, de elfelejtette a tranzakciót, így a második fázisban már nem vesz részt. 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 tranzakciót.
Megjegyzések
Egy résztvevő több protokollhoz is regisztrálva lehet, így rugalmasan alkalmazkodhat a különböző tranzakciós igényekhez és erőforrásokhoz.
A protokoll elemek különböző kiterjesztési pontokat kínálnak, amelyek azonban nem lehetnek ellentétesek a szülő vagy tulajdonos elem szemantikájával. Ha egy fogadó nem ismeri fel a kiterjesztést, ajánlott figyelmen kívül hagynia, hogy a rendszer működése zavartalan maradjon.
Kiemelten ajánlott a szolgáltatások közötti kommunikáció biztonságának biztosítása a WS-Security specifikációban leírt hitelesítési és titkosítási mechanizmusok alkalmazásával, különösen érzékeny vagy üzletileg kritikus tranzakciók esetén.
A WS-Atomic Transaction szabványt napjainkban széles körben alkalmazzák nagyvállalati rendszerekben, elosztott adatbázis-műveletek, pénzügyi és logisztikai folyamatok, valamint felhőalapú szolgáltatások esetén is, ahol a megbízhatóság és a konzisztencia kulcsfontosságú követelmény.
Jegyzetek
Kategória:Webszolgáltatások