WS-Atomic Transaction

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.

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:

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. 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[halott link]

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[halott link]

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