3. Systemy transakcyjne
Termin system transakcyjny jest stosowany zasadniczo w odniesieniu do
dużych, kompleksowych systemów obejmujących, między innymi, takie elementy jak:
system operacyjny, obsługę sieci, narzędzia do tworzenia i zarządzania aplikacjami,
a także bazy danych. Ze względu na podstawowe cechy: rozmiary, funkcjonalność,
cele, zadania, systemy charakteryzujące się transakcyjnym stylem przetwarzania
są trudne do jednoznacznego sklasyfikowania. Granica między systemem transakcyjnym,
a takim, który już za transakcyjny nie może uchodzić, jest w niektórych przypadkach
wyjątkowo trudna do uchwycenia i pozostaje raczej w sferze umownej, niż jest
wyznaczana przez faktyczne kryteria decydujące o architekturze i funkcjonalności
systemu. Niemniej jednak, jeżeli chcielibyśmy sformułować możliwie ogólną definicję
systemu transakcyjnego, to brzmiałaby ona w przybliżeniu w następujący sposób3.1:
System transakcyjny dostarcza narzędzi do łatwego lub automatycznego tworzenia,
uruchamiania i administrowania aplikacjami. Typowe aplikacje transakcyjne działają
w obrębie sieci urządzeń generujących zapytania lub dostarczających dane wejściowe.
Na podstawie uzyskanych informacji aplikacja utrzymuje lokalną bazę danych,
stanowiącą reprezentację pewnego stanu rzeczywistego. Ponadto, dane generowane
przez aplikacje wyzwalają zazwyczaj czynniki ze świata rzeczywistego, odpowiedzialne
za zmiany tego stanu. Zadaniem systemu transakcyjnego jest udostępnienie odpowiednich
mechanizmów, zapewniających komunikację między aplikacjami i procesami zarządzającymi
poszczególnymi typami zasobów systemu, z jednoczesnym zagwarantowaniem własności
ACID dla całego cyklu przetwarzania. Aplikacje, bazy danych i sieć ewoluują
od kilku dziesięcioleci. W efekcie, nowoczesne systemy w coraz większym stopniu
są rozproszone geograficznie, zróżnicowane (heterogeniczne) pod względem sprzętu
i oprogramowania oraz muszą spełniać ostre kryteria dotyczące niezawodności,
dostępności i czasu odpowiedzi systemu.
W chwili obecnej znajduje zastosowanie wiele systemów transakcyjnych zaprojektowanych
pierwotnie dla zupełnie odmiennych celów, takich jak systemy bankowe, telekomunikacyjne,
czy też systemy rezerwacji biletów (np. lotniczych). Niemal wszystkie, chociaż
spełniają różne funkcje, są jednak oparte na tym samym abstrakcyjnym modelu,
charakteryzującym się pionową strukturą (rys. 3.1).
Rysunek 3.1:
Wielowarstwowa architektura systemu transakcyjnego. Szarym kolorem zostały zaznaczone elementy dostarczane przez typowy monitor transakcyjny.
|
W jego skład wchodzą następujące warstwy (w kolejności od położonej
najniżej warstwy sprzętowej):
- Warstwa fizyczna (sprzętowa)
- obejmuje takie elementy, jak procesory, pamięć
fizyczna, kable, światłowody.
- Warstwa bazowego systemu operacyjnego
- (ang. BOS -- Basic Operating System)
stanowi oprogramowanie zarządzające sprzętem. Do jej zadań należy tworzenie
i szeregowanie procesów, zarządzanie pamięcią, udostępnianie mechanizmu komunikacji
międzyprocesowej (ang. IPC -- Interprocess Communication) oraz tworzenie
i obsługa nazw dla lokalnych obiektów. Ponadto, umożliwia ona wykonywanie podstawowych
operacji na plikach, jak też realizuje ochronę dostępu na ich poziomie. BOS
powinien również zapewnić uwierzytelnianie i autoryzację użytkowników oraz podstawowe
mechanizmy komunikacji sieciowej (kontrola sesji, nazwy fizyczne węzłów, porty
itp.).
- Warstwa transakcyjnego systemu operacyjnego
- (ang. TPOS -- Transaction
Processing Operating System), której podstawowym zadaniem jest prezentacja
obiektów i usług BOS w stylu transakcyjnym. Oznacza to uzupełnienie poszczególnych
składowych systemu (procesów, komunikatów, plików oraz sesji komunikacyjnych)
o własność ACID. Aby to osiągnąć, udostępnia się zbiór dodatkowych mechanizmów,
takich jak: Transakcyjne Zdalne Wywoływanie Procedur (TRPC3.2), interfejs do globalnego rejestru transakcji, trwałe kolejki komunikatów,
czy też mechanizm rozproszonych blokad. Ponadto, TPOS przejmuje na siebie obowiązek
obsługi całego cyklu przetwarzania transakcji od startu do jej zakończenia lub
jej wycofania w razie wystąpienia błędu. Do jego zadań należy również odwzorowywanie
danego typu nadchodzących żądań na odpowiedni typ zasobu, a następnie przekazanie
zlecenia do wybranego programu zarządcy zasobu (ang. RM -- Resource Manager).
Dodatkowo dokonuje on potwierdzenia tożsamości klienta nadawcy, szereguje nadchodzące
zlecenia oraz zajmuje się restartem systemu w razie awarii i przywróceniem stanu
sprzed jej wystąpienia. Poza tym definiuje zunifikowany interfejs do komunikacji
z procesami zarządzającymi określonymi typami zasobów (ang. RMI -- Resource
Manager Interface) w taki sposób, by system transakcyjny mógł zostać rozszerzony
o nowe usługi i jednocześnie by zasoby te bez przeszkód mogły wykorzystać własność
ACID (transakcyjności).
- Warstwa usług transakcyjnych
- (ang. TRAPS -- Transaction Processing Services)
zapewnia środowisko programistyczne dla aplikacji transakcyjnych. Obejmuje ona
zestaw zasobów i procesów nimi zarządzających, udostępniający szeroki wachlarz
usług, takich jak: systemy bazodanowe (oparte na SQL-u), interfejs kontroli
przepływu transakcji, ogólny mechanizm wywołania zdalnych serwerów (włączając
w to przezroczystość lokalizacji serwerów). Poza tym udostępniane są interfejsy
do monitorowania działania systemu, równoważenia obciążenia oraz zarządzania
konfiguracją. Warstwa usług transakcyjnych powinna zawierać również narzędzia
programistyczne do tworzenia i testowania aplikacji. Dodatkowo konieczne jest
stworzenie obrazu systemu niezawodnego, odpornego na awarie (nawet takie jak
katastrofy) i wysoko dostępnego, który realizuje przejścia stanowe w sposób
atomowy na dowolnym poziomie abstrakcji.
- Warstwa aplikacji
- grupuje wszystkie programy budowane w oparciu o cztery wyżej
omówione warstwy.
Podrozdziały
- 3.1 Monitor transakcyjny
- 3.1.1 Usługi warstwy prezentacji
- 3.1.2 Szeregowanie zleceń
- 3.1.3 Trwałe kolejki komunikatów
- 3.1.4 Uwierzytelnianie i autoryzacja
- 3.1.5 Równoważenie obciążenia
- 3.1.6 Przechowywanie kontekstu przetwarzania
- 3.1.7 Restart systemu
- 3.2 Program zarządcy zasobów
- 3.3 Koordynator transakcji
- 3.4 Kontroler sesji komunikacyjnych
- 3.5 Globalny rejestr transakcji
- 3.6 Przykładowy system transakcyjny
K. Kowalewski, R. Żmijewski
1999-12-17